NPM - 添加到 package.json 但不安装

Posted

技术标签:

【中文标题】NPM - 添加到 package.json 但不安装【英文标题】:NPM - Add to package.json but don't install 【发布时间】:2016-11-23 23:16:48 【问题描述】:

我想知道是否可以运行一个命令来检查包是否是有效的 npm 包,将其作为依赖项添加到 package.json,但不安装它。

我这样做是因为我在全球范围内安装了某个包,并且需要它用于开源项目。因此,我希望它被包括在内。

【问题讨论】:

没有添加 IIRC 的命令,但您始终可以自己编辑 json。请注意,在 package.json 中有一个包与您require()在代码中使用该包无关。 我理解这种差异。我希望它在那里,因为我依靠人们在克隆 repo 时运行npm install 然后手动添加到package.json文件即可。 【参考方案1】:

只更新 package.json,没有任何其他副作用的正确方法是:

npm install --save --package-lock-only --no-package-lock <package>

使用--package-lock-only 防止写入node_modules。

--package-lock-only 参数只会更新 package-lock.json,而不是检查 node_modules 和下载 依赖关系。

然后,使用--no-package-lock 来阻止锁文件的创建:

--no-package-lock 参数将阻止 npm 创建 package-lock.json 文件。使用 package-lock 的禁用 npm 运行时 安装时不会自动修剪你的节点模块。

请参阅npm install docs 了解更多信息。

【讨论】:

这太好了,谢谢,但奇怪的是没有更迂回的方式来做到这一点。 显然这是一个错误,它已在 npm 6.9.0 ***.com/a/54741955/1222240 中修复【参考方案2】:

我认为你不能用 npm 做到这一点。我查看了文档,但没有找到任何相关信息。

您可以将其用作解决方法:

npm i <package> --save && npm uninstall <package>

希望对你有帮助。

【讨论】:

【参考方案3】:

如果你的包是全局安装的,不知道如果你运行npm会不会重新安装:

npm install --save foobar

这就是我将它添加到 package.json 的方法。

【讨论】:

你是说如果包在全球范围内存在,npm 会避开本地安装? 他是这么说的,但他错了。 npm install foobar 将在本地安装 foobar,无论它是否已在全局范围内安装。 对不起,我的不幸回答。 @EmileBergeron 那么如何设置 package.json 以使用已安装在您计算机上的依赖项?无需编辑文件 您为什么不手动编辑文件?它易于编辑...--save 标志只是为了方便。 这不是太痛苦,但如果可以的话,我喜欢避免做两次。打开文件、输入我需要记住的所有文本、犯错误、排除故障等都会导致潜在的时间浪费。

以上是关于NPM - 添加到 package.json 但不安装的主要内容,如果未能解决你的问题,请参考以下文章

npm安装卸载命令

利用npm 安装删除模块

利用npm 安装删除模块

利用npm 安装删除模块

npm 安装卸载模块

npm install 如果 package.json 被修改