Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to npm install to only save dependency to package.json?

I'm adding dependencies to a package.json that will be used as part of a provisioning process for a virtual machine. As such, I don't actually need to install the modules locally since the provisioner will do that for me inside the VM. So is there any way to do the following:

npm install --save <module> 

So that it only creates a dependency for the latest version of the module in package.json without actually downloading the module or creating a node_modules folder?

The --dry-run option is close, as it doesn't create a node_modules folder but it also doesn't write to package.json either.

For now, I'm manually doing the following each time I need to update packages before re-provisioning the VM:

rm -rf node_modules 

Other reasons for this might include being able to easily build a package.json file in low-bandwidth situations such as tethering, where you know you'll need the module eventually but don't want to spare the bandwidth.

like image 627
Soviut Avatar asked Nov 10 '16 19:11

Soviut


People also ask

How do I save all dependencies to package json?

To add dependencies and devDependencies to a package. json file from the command line, you can install them in the root directory of your package using the --save-prod flag for dependencies (the default behavior of npm install ) or the --save-dev flag for devDependencies.

How npm install specific dependencies?

For npm install specific version, use npm install [package-name]@[version-number]. Use npm view [package-name] version to know the specific latest version of a package available on the npm registry. Use npm list [package-name] to know the specific latest version of an installed package.

Does npm install install everything in Package json?

By default, npm install will install all modules listed as dependencies in package. json .

Does npm install automatically add to json?

json, you can re-run npm init -y and the repository field will be added automatically to your package. json.


2 Answers

Was searching for the solution. Haven't found, then made a script which adds dependencies (latest or specified versions) to the package.json file skipping the installation process.

https://www.npmjs.com/package/add-dependencies

Installation

If not using with npx (see below):

$ npm install add-dependencies [-g] 

Usage

Run:

$ add-dependencies [package_file] <dependencies> [target] [--no-overwrite] 

or with npx:

$ npx add-dependencies [package_file] <dependencies> [target] [--no-overwrite] 

where dependencies is the list of dependencies divided by space, and target is one of the following:

  • --dev / --save-dev / -D for devDependencies
  • --peer / --save-peer / -P for peerDependencies
  • --optional / --save-optional / -O for optionalDependencies

If no target argument passed, dependencies are written to dependencies.

If no package_file argument passed, the script searches for a package.json file within the current working directory.

Use --no-overwrite flag to prevent already existing packages in package.json from being overwritten.

Example:

$ add-dependencies /home/user/project/package.json [email protected] [email protected] redux eslint --dev 

or with npx:

$ npx add-dependencies /home/user/project/package.json [email protected] [email protected] redux eslint --dev 

Hope this could help someone else.

like image 181
Arfeo Avatar answered Sep 20 '22 17:09

Arfeo


There is no way to do that with npm that I'm aware of.

There are two npm packages for doing this; I've never used either of them, but they might be worth a try:

  • https://www.npmjs.com/package/npm-add
  • https://www.npmjs.com/package/adddep

Hope this helps!

like image 45
RyanZim Avatar answered Sep 19 '22 17:09

RyanZim