buckaroo1177125
buckaroo1177125

Reputation: 1683

npm link removes child dependencies

I am trying to do local development of an NPM package and test it in a package which depends on it. I'm using NPM (7.5.3) and specifically npm link for this but running into a problem with the chain of dependencies.

The child package has dependencies, these are all added to the parent's node_modules folder when using npm install "git+https://github.com/name/child_package". But when I npm link that module:

cd child_package
npm link
cd ../parent_package
npm link child_package

With the last command run (npm link child_package), all of the dependencies for child_package which were in the node_modules of parent_package are removed. NPM reporting:

removed 60 packages, changed 1 package, and audited 231 packages in 1s

At which point all the compilation in the parent package fails due to the missing deps. It finds the child_package, which is symlinked as expected, but dependency defined in child_package of "gsap" has now been removed.

If I reinstall it using npm install "git+https://github.com/name/child_package" it will add the deps back into the node_modules folder of the parent project.

Upvotes: 19

Views: 2596

Answers (2)

Jasminen
Jasminen

Reputation: 49

This is a behavior introduced in npm V7 + .

The only reasonable "workaround" i have found is to go back to npm 6 (npm install -g npm@6).

Another "workaround" is to npm install --no-save ../../my-local-module but to reflect changes to the local module you will need to delete it from node_modules and reinstall again. Kind of lame....

Upvotes: 3

Andrey
Andrey

Reputation: 2078

try to do the following:

cd child_package
npm install

that will install child dependencies to directory of child package

personally I hate npm link and always use npm publish (use version number like 1.0.0-preview.1 for your child package and remove '-preview.Number' when you are done)

Upvotes: 2

Related Questions