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.
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!
Interestingly combining --package-lock-only
with --no-package-lock
seems to do this
npm install --package-lock-only --no-package-lock PACKAGE
This does not create or update the package-lock.json file. Only adds an entry to the package.json
UPDATE
This was actually a bug and is now fixed in npm 6.9.0
https://github.com/npm/cli/pull/146
https://npm.community/t/release-npm-6-9-0/5911
Was searching for the solution. Haven't found, then made a script which adds dependencies (latest 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), you can install with:
$ npm install add-dependencies [-g]
Usage
Go to a directory with the target package.json
and run:
$ add-dependencies <dependencies> [target] [--no-overwrite]
or with npx
:
$ npx add-dependencies <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
.
Use --no-overwrite
flag to prevent already existing packages in package.json
from being overwritten.
Example:
$ add-dependencies moment@2.0.0 react@16.8 redux eslint --dev
or with npx
:
$ npx add-dependencies moment@2.0.0 react@16.8 redux eslint --dev
Hope this could help someone else.
npm install --save packagename
then npm uninstall packagename
(without --save flag) accomplishes this, though an empty node_modules folder is created