如何 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 中修复
我正在向 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 中修复