@@ -21,6 +21,40 @@ export function getPackageResolution({
21
21
appPath : string
22
22
appPackageJson : any
23
23
} ) {
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
+
24
58
if ( packageManager === "yarn" ) {
25
59
let lockFilePath = "yarn.lock"
26
60
if ( ! existsSync ( lockFilePath ) ) {
@@ -80,17 +114,6 @@ export function getPackageResolution({
80
114
return { version : resolution }
81
115
} else if ( packageManager === "pnpm" ) {
82
116
// 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
-
94
117
// TODO validate: declaredVersion must not be wildcard
95
118
return { version : declaredVersion }
96
119
0 commit comments