Creating patch file for GitHub dependency fails with ENOENT: no such file or directory
See original GitHub issueI was trying to create a patch for a GitHub dependency I added to my projects like this in package.json:
"react-native-scrollable-tab-view": "git+https://github.com/ptomasroos/react-native-scrollable-tab-view.git"
And creating the patch fails with:
• Diffing your files with clean files Error: ENOENT: no such file or directory, scandir ‘/var/folders/bx/qmlnk5tn0lqgn4d_cyplmh5w0000gn/T/tmp-46952lUjIew9dd5Kd/node_modules/react-native-scrollable-tab-view’ at Object.readdirSync (node:fs:1067:3) at Object.klawSync [as default] (/…/react-native/node_modules/klaw-sync/klaw-sync.js:13:25) at Object.removeIgnoredFiles (/…/react-native/node_modules/patch-package/dist/filterFiles.js:10:24) at Object.makePatch (/…/react-native/node_modules/patch-package/dist/makePatch.js:123:23) at /…/react-native/node_modules/patch-package/dist/index.js:48:25 at Array.forEach (<anonymous>) at Object.<anonymous> (/…/react-native/node_modules/patch-package/dist/index.js:47:22) at Module._compile (node:internal/modules/cjs/loader:1108:14) at Object.Module._extensions…js (node:internal/modules/cjs/loader:1137:10) at Module.load (node:internal/modules/cjs/loader:973:32) { errno: -2, syscall: ‘scandir’, code: ‘ENOENT’, path: ‘/var/folders/bx/qmlnk5tn0lqgn4d_cyplmh5w0000gn/T/tmp-46952lUjIew9dd5Kd/node_modules/react-native-scrollable-tab-view’ } /…/react-native/node_modules/patch-package/dist/makePatch.js:184 throw e; ^
Error: ENOENT: no such file or directory, scandir ‘/var/folders/bx/qmlnk5tn0lqgn4d_cyplmh5w0000gn/T/tmp-46952lUjIew9dd5Kd/node_modules/react-native-scrollable-tab-view’ at Object.readdirSync (node:fs:1067:3) at Object.klawSync [as default] (/…/react-native/node_modules/klaw-sync/klaw-sync.js:13:25) at Object.removeIgnoredFiles (/…/react-native/node_modules/patch-package/dist/filterFiles.js:10:24) at Object.makePatch (/…/react-native/node_modules/patch-package/dist/makePatch.js:123:23) at /…/react-native/node_modules/patch-package/dist/index.js:48:25 at Array.forEach (<anonymous>) at Object.<anonymous> (/…/react-native/node_modules/patch-package/dist/index.js:47:22) at Module._compile (node:internal/modules/cjs/loader:1108:14) at Object.Module._extensions…js (node:internal/modules/cjs/loader:1137:10) at Module.load (node:internal/modules/cjs/loader:973:32) { errno: -2, syscall: ‘scandir’, code: ‘ENOENT’, path: ‘/var/folders/bx/qmlnk5tn0lqgn4d_cyplmh5w0000gn/T/tmp-46952lUjIew9dd5Kd/node_modules/react-native-scrollable-tab-view’ }
I then looked a bit into makePatch.js and found the automatically created package.json looking like this:
{"dependencies":{"react-native-scrollable-tab-view":"react-native-scrollable-tab-view@git+https://github.com/ptomasroos/react-native-scrollable-tab-view.git"},"resolutions":{}}
So just to check if the react-native-scrollable-tab-view@
is the issue I replaced the getPackageResolution
call in makePatch.js:49 with the static GitHub URL I used in the package.json above and the patch file was created correctly:
{"dependencies":{"react-native-scrollable-tab-view":"git+https://github.com/ptomasroos/react-native-scrollable-tab-view.git"},"resolutions":{}}
I am now wondering if I am linking the GitHub dependency in a wrong way (though I tried various other) or if this is a bug or not expected usage of patch-package at all.
All of this happened on macOS 11.1 with patch-package 6.2.2.
Issue Analytics
- State:
- Created 3 years ago
- Reactions:4
- Comments:9
Top GitHub Comments
replace makePatch:50 with the following:
fs_extra_1.writeFileSync(tmpRepoPackageJsonPath, JSON.stringify({ dependencies: { [packageDetails.name]: getPackageResolution_1.getPackageResolution({ packageDetails, packageManager, appPath, }).replace(/(.*)@/g, ""), }, resolutions: resolveRelativeFileDependencies_1.resolveRelativeFileDependencies(appPath, appPackageJson.resolutions || {}), }));
it’s quite a messy solution, but it still works for me 😂
I am just replacing the first part of the git url, it seemed to work, but your solution looks cleaner indeed