Skip to content

Commit 9b85ad5

Browse files
0x800916dhkimsounmind
authored
Fix relative paths in lockfile (#98)
Co-authored-by: Danny Kim <[email protected]> Co-authored-by: Evan Suhyeong Lee <[email protected]>
1 parent 22ef469 commit 9b85ad5

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

src/lib/lockfile/helpers/generate-pnpm-lockfile.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export async function generatePnpmLockfile({
118118

119119
return [
120120
".",
121-
pnpmMapImporter(importer, {
121+
pnpmMapImporter(".", importer, {
122122
includeDevDependencies,
123123
includePatchedDependencies,
124124
directoryByPackageName,
@@ -130,7 +130,7 @@ export async function generatePnpmLockfile({
130130

131131
return [
132132
importerId,
133-
pnpmMapImporter(importer, {
133+
pnpmMapImporter(importerId, importer, {
134134
includeDevDependencies,
135135
includePatchedDependencies,
136136
directoryByPackageName,

src/lib/lockfile/helpers/pnpm-map-importer.ts

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import path from "node:path";
12
import type {
23
ProjectSnapshot,
34
ResolvedDependencies,
@@ -7,6 +8,7 @@ import { mapValues } from "remeda";
78

89
/** Convert dependency links */
910
export function pnpmMapImporter(
11+
importerPath: string,
1012
{ dependencies, devDependencies, ...rest }: ProjectSnapshot,
1113
{
1214
includeDevDependencies,
@@ -19,21 +21,41 @@ export function pnpmMapImporter(
1921
): ProjectSnapshot {
2022
return {
2123
dependencies: dependencies
22-
? pnpmMapDependenciesLinks(dependencies, directoryByPackageName)
24+
? pnpmMapDependenciesLinks(
25+
importerPath,
26+
dependencies,
27+
directoryByPackageName
28+
)
2329
: undefined,
2430
devDependencies:
2531
includeDevDependencies && devDependencies
26-
? pnpmMapDependenciesLinks(devDependencies, directoryByPackageName)
32+
? pnpmMapDependenciesLinks(
33+
importerPath,
34+
devDependencies,
35+
directoryByPackageName
36+
)
2737
: undefined,
2838
...rest,
2939
};
3040
}
3141

3242
function pnpmMapDependenciesLinks(
43+
importerPath: string,
3344
def: ResolvedDependencies,
3445
directoryByPackageName: { [packageName: string]: string }
3546
): ResolvedDependencies {
36-
return mapValues(def, (value, key) =>
37-
value.startsWith("link:") ? `link:./${directoryByPackageName[key]}` : value
38-
);
47+
return mapValues(def, (value, key) => {
48+
if (!value.startsWith("link:")) {
49+
return value;
50+
}
51+
52+
const relativePath = path.relative(
53+
importerPath,
54+
directoryByPackageName[key]
55+
);
56+
57+
return relativePath.startsWith(".")
58+
? `link:${relativePath}`
59+
: `link:./${relativePath}`;
60+
});
3961
}

0 commit comments

Comments
 (0)