问题
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.
回答1:
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!
回答2:
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
回答3:
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/npm-add-dependencies
Installation
$ npm install npm-add-dependencies -g
Usage
Go to a directory with the target package.json
and run
$ npm-add-dependencies <dependencies> [target]
where dependencies
is the list of dependencies divided by space, and target
is one of the following:
--dev
for devDependencies
--peer
for peerDependencies
--bundled
for bundledDependencies
--optional
for optionalDependencies
If no target
argument passed, dependencies are written to dependencies
.
Will be glad if it could help someone else.
回答4:
npm install --save packagename
then npm uninstall packagename
(without --save flag) accomplishes this, though an empty node_modules folder is created
来源:https://stackoverflow.com/questions/40535328/how-to-npm-install-to-only-save-dependency-to-package-json