Installs dependencies included with a local path
$ npm i -D pack-local-dependencies
Add the following postinstall script to your package.json
{
"scripts": {
"postinstall": "pack-local-dependencies"
}
}
If your sub-package requires a postinstall script, use pack-local-dependencies:postinstall
instaed - This will run after pack-local-dependencies installs its dependencies.
{
"name": "local-sub-module",
"scripts": {
"pack-local-dependencies:postinstall": "tsc"
},
"devDependencies": {
"typescript": "~3.7.3"
}
}
Local dependencies have to be included with file:
prefix in order to be recognized by pack-local-dependencies
.
npm does not run npm install
for dependencies included with local path.
For example,
{
"name": "some-package",
"dependencies": {
"another-package": "file:../another-package"
}
}
When installing some-package
, npm will create a symlink from ../another-package
to some-package/node_modules/another-package
, but it won't run npm install
on ../another-package
, so another-package
won't have its dependencies install and won't function properly.
After including pack-local-dependencies
in your package's postinstall
script, it will run every time your package is installed, and will find all the dependencies in your packages that included using a local path, then it iterates them and runs npm install
on every package to install its dependencies.
The npm team proposed an RFC to fix this issue: npm/rfcs#150