32

I'm attemting to modify an npm package with multiple dependencies. As such npm install -g . takes a long time to execute. Do I have other options besides removing the dependencies from packages.json?

2
  • I think this question is a better fit for SO, and was asked there before this one - Install only one package from package.json?. It also has updated answers. Commented Apr 4, 2021 at 10:16
  • I’m voting to close this question because I believe it belongs to SO, and had been asked there already. Commented Apr 4, 2021 at 10:16

4 Answers 4

23

--no-optional option is now implemented according to this documentation https://docs.npmjs.com/cli/install :

The --no-optional argument will prevent optional dependencies from being installed.
14

If you're developing that node_module yourself, don't waste your time on npm installs, instead use npm link.

In short, you create a symbolic link to your module folder on an npm-owned global folder, and then in your app folder you ask npm to use that symbolic linked folder.

This makes changes you make in the module folder to be reflected immediately in your app.

Here are the main steps (copied from the tutorial linked below, make sure to read the tutorial for important gotchas):

  1. cd to src/my_module
  2. Run "npm link". This creates a symbolic link from a global folder to the src/my_module folder.
  3. cd to src/my_app
  4. Run npm link my_module. This links node_modules/my_module in this particular project to the global folder, so that require calls looking for my_module wind up loading it from your development folder, src/my_module.

See this tutorial: http://justjs.com/posts/npm-link-developing-your-own-npm-modules-without-tears And the official docs for npm link: https://docs.npmjs.com/cli/link

1
  • Not changing my accepted answer, but upvoting because this is useful for my specific case. Commented Jan 17, 2017 at 14:53
10

This feature was requested back in 2010, but unfortunately was ignored and closed: https://github.com/npm/npm/issues/340

I tried a bunch of options, and finally found a pretty simple solution - rename package.json to something else before doing npm install, then revert it back to after install finishes:

mv package.json package.bak
npm install <package_name> --no-save
mv package.bak package.json
2
  • 4
    Wow, is that seriously still the only way? That's ridiculous, there should be a flag --ignore-package or something. Commented Oct 12, 2018 at 20:42
  • 3
    This solution is good and so far it may be the best solution for my question: stackoverflow.com/questions/53532845/…
    – aGuegu
    Commented Nov 29, 2018 at 19:46
7

Looking through the docs it doesn't appear to have an option beyond the --no-optional switch.

Untested/uncomfirmed

This SO Q&A titled: npm install installs all dependencies of my project over the network, even if they are already installed or available from cache would seem to imply there's a --skip-installed switch. But the docs do not make any reference to this switch.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .