Skip to content

Commit ad88c72

Browse files
committed
fix file: protocol versions
1 parent c87136d commit ad88c72

File tree

1 file changed

+34
-11
lines changed

1 file changed

+34
-11
lines changed

src/getPackageResolution.ts

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,40 @@ export function getPackageResolution({
2121
appPath: string
2222
appPackageJson: any
2323
}) {
24+
25+
if (isDebug) {
26+
console.log(`getPackageResolution:`)
27+
console.dir({
28+
packageDetails, // dependency
29+
packageManager,
30+
appPath, // file: protocol versions are relative to appPath
31+
appPackageJson, // parent package
32+
})
33+
}
34+
35+
const declaredVersion =
36+
(appPackageJson.dependencies &&
37+
appPackageJson.dependencies[packageDetails.name]) ||
38+
(appPackageJson.devDependencies &&
39+
appPackageJson.devDependencies[packageDetails.name])
40+
if (isDebug) {
41+
console.log(
42+
`patch-package/getPackageResolution: declaredVersion = ${declaredVersion}`,
43+
)
44+
}
45+
46+
if (declaredVersion.startsWith('file:')) {
47+
// supported by all managers
48+
// resolve relative file path
49+
const filePath = resolve(appPath, declaredVersion.slice("file:".length))
50+
if (isDebug) {
51+
console.log(`patch-package/getPackageResolution: resolved filePath ${filePath}`)
52+
}
53+
return {
54+
version: `file:${filePath}`,
55+
}
56+
}
57+
2458
if (packageManager === "yarn") {
2559
let lockFilePath = "yarn.lock"
2660
if (!existsSync(lockFilePath)) {
@@ -80,17 +114,6 @@ export function getPackageResolution({
80114
return { version: resolution }
81115
} else if (packageManager === "pnpm") {
82116
// WORKAROUND for pnpm bug? pnpm-lock.yaml says version 1.2.3 for linked packages, not link:../../path/to/package
83-
const declaredVersion =
84-
(appPackageJson.dependencies &&
85-
appPackageJson.dependencies[packageDetails.name]) ||
86-
(appPackageJson.devDependencies &&
87-
appPackageJson.devDependencies[packageDetails.name])
88-
if (isDebug) {
89-
console.log(
90-
`patch-package/getPackageResolution: declaredVersion = ${declaredVersion}`,
91-
)
92-
}
93-
94117
// TODO validate: declaredVersion must not be wildcard
95118
return { version: declaredVersion }
96119

0 commit comments

Comments
 (0)