https://github.com/bluzi/pack-local-dependencies
:rocket: Install sub-dependencies for dependencies included with a local path
https://github.com/bluzi/pack-local-dependencies
monorepo nodejs npm
Last synced: 3 months ago
JSON representation
:rocket: Install sub-dependencies for dependencies included with a local path
- Host: GitHub
- URL: https://github.com/bluzi/pack-local-dependencies
- Owner: bluzi
- Created: 2021-07-07T00:40:04.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2021-07-13T12:51:23.000Z (about 5 years ago)
- Last Synced: 2025-10-08T21:28:17.288Z (10 months ago)
- Topics: monorepo, nodejs, npm
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/pack-local-dependencies
- Size: 61.5 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
pack-local-dependencies
===
Installs dependencies included with a [local path](https://docs.npmjs.com/cli/v7/configuring-npm/package-json#local-paths)
## Usage
### Installation
```
$ npm i -D pack-local-dependencies
```
### Execution
Add the following postinstall script to your package.json
```json
{
"scripts": {
"postinstall": "pack-local-dependencies"
}
}
```
### Postinstall script
If your sub-package requires a postinstall script, use `pack-local-dependencies:postinstall` instaed - This will run after pack-local-dependencies installs its dependencies.
#### Example
```json
{
"name": "local-sub-module",
"scripts": {
"pack-local-dependencies:postinstall": "tsc"
},
"devDependencies": {
"typescript": "~3.7.3"
}
}
```
### Including local dependenices
Local dependencies have to be included with `file:` prefix in order to be recognized by `pack-local-dependencies`.
## Why?
npm does not run `npm install` for [dependencies included with local path](https://docs.npmjs.com/cli/v7/configuring-npm/package-json#local-paths).
For example,
```json
{
"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.
## Solution
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.
## Official fix
The npm team proposed an RFC to fix this issue:
https://github.com/npm/rfcs/pull/150