如何 npm install 只保存对 package.json 的依赖?

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

我正在向 package.json 添加依赖项,它将用作虚拟机配置过程的一部分。因此,我实际上不需要在本地安装模块,因为配置器会在 VM 内为我安装这些模块。那么有什么办法可以做到以下几点:

npm install --save <module>

所以它 package.json 中最新版本的模块创建依赖关系,而无需实际下载模块或创建 node_modules 文件夹?

--dry-run 选项已关闭,因为它不会创建 node_modules 文件夹,但也不会写入 package.json

现在,每次我需要在重新配置 VM 之前更新软件包时,我都会手动执行以下操作:

rm -rf node_modules

其他原因可能包括能够在网络共享等低带宽情况下轻松构建 package.json 文件,在这种情况下您知道最终会需要该模块但又不想保留带宽。

据我所知,npm 无法做到这一点。

有两个 npm 包可以做到这一点;我从未使用过它们中的任何一个,但它们可能值得一试:

希望对您有所帮助!

npm install --save packagename 然后 npm uninstall packagename(没有 --save 标志)完成此操作,尽管创建了一个空的 node_modules 文件夹

正在寻找解决方案。还没有找到,然后制作了一个脚本,将依赖项(最新或指定版本)添加到 package.json 文件,跳过安装过程。

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

安装

如果不与 npx 一起使用(见下文):

$ npm install add-dependencies [-g]

用法

运行:

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

npx:

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

其中 dependencies 是除以 space 的依赖项列表,target 是以下之一:

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

如果未传递 target 参数,依赖项将写入 dependencies

如果没有传递 package_file 参数,脚本会在当前工作目录中搜索 package.json 文件。

使用 --no-overwrite 标志来防止 package.json 中已经存在的包被覆盖。

示例:

$ add-dependencies /home/user/project/package.json moment@2.0.0 react@16.8 redux eslint --dev

npx:

$ npx add-dependencies /home/user/project/package.json moment@2.0.0 react@16.8 redux eslint --dev

希望这可以帮助其他人。

有趣的是,将 --package-lock-only--no-package-lock 组合似乎可以做到这一点

npm install --package-lock-only --no-package-lock PACKAGE

这不会创建或更新 package-lock.json 文件。仅向 package.json

添加一个条目

更新

这实际上是一个错误,现在已在 npm 6.9.0 中修复

https://github.com/npm/cli/pull/146

https://npm.community/t/release-npm-6-9-0/5911