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

14

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

我这样做是因为我已经全局安装了某个软件包,并且需要在开源项目中使用它。因此,我希望它被包括在内。


2
没有特定的指令只是添加IIRC,但您可以随时自己编辑json。请注意,在package.json中有一个软件包与您在代码中“require()”该软件包无关。 - Chad
我理解这个差异。我希望它存在,因为我依赖于人们在克隆存储库后运行npm install - MadPhysicist
只需手动将它添加到package.json文件中即可。 - Emile Bergeron
有一个非常简单的解决方案,请看这里:https://dev59.com/2lkR5IYBdhLWcg3w_B_-#75015023 - jv-k
3个回答

21

只更新 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 将不会自动修剪您的节点模块。

更多信息请参见npm 安装文档


这很棒,谢谢你,但是没有更直接的方法做这件事情有点奇怪。 - ADJenks
显然这是一个错误,在npm 6.9.0中已经修复了。https://dev59.com/2lkR5IYBdhLWcg3w_B_-#54741955 - valepu
1
@valepu 可能是因为它已经被放回去了,因为在 npm v6.17.0 和 npm 8 中仍然可以正常工作。 - user3781737

2

我认为你无法使用npm完成这个任务。我查阅了文档,但没有找到相关内容。

你可以尝试以下方法作为解决方案:

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

希望这能帮到你。

-3
如果您的软件包是全局安装的,我不确定如果您运行以下命令,npm是否会重新安装它:
npm install --save foobar

这就是我会做的,将其添加到package.json中。


你是在说如果全局存在该包,npm就会避免进行本地安装吗? - MadPhysicist
2
这就是他说的,但他是错的。无论是否已全局安装,npm install foobar都会在本地安装foobar - Emile Bergeron
抱歉我的回答不够准确。 @EmileBergeron 那么,如何设置您的package.json以使用已经安装在计算机上的依赖项?而无需编辑文件。 - Nossyra46
1
为什么不直接手动编辑文件呢?它本来就是易于编辑的... --save 标志只是一种方便。 - Emile Bergeron
1
这并不是太痛苦,但如果可以避免重复做同样的事情,我会更喜欢。打开文件,输入需要记忆的所有文本,出错,排除故障等都可能导致浪费时间。 - MadPhysicist
你为什么要这样回答?难道你没有看到问题吗? - JΛYDΞV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接