如何防止npm install删除软件包?

时间:2018-07-21 03:57:13

标签: node.js npm

我试图用几个软件包来设置开发环境,因此,我需要手动安装一些依赖项。更具体地说,在将它们推送到github之前,我需要测试几个软件包中的一些本地更改,因此我不能只是npm install的顶层,因为它不会接受那些更改。因此,我在缺少的软件包上手动运行了第一个npm install,然后尝试运行我的节点代码并查看它仍然缺少哪个软件包,然后尝试npm install它说了什么丢失。

但是,当我去安装第二个软件包时,它最终显示以下消息:

added 3 packages from 4 contributors, removed 799 packages and audited 3 packages in 4.197s

第二次安装实际上删除了已经安装的每个软件包!我直到第三次才意识到这一点,当时我意识到自己似乎一遍又一遍地安装相同的东西。

但是我如何防止这种特别顽皮的行为,并迫使npm只安装我告诉它的内容,而让其他所有内容都不显示?

5 个答案:

答案 0 :(得分:1)

如果需要针对修改后的软件包进行测试,请查看npm link

来自npm link这对于安装您自己的东西很方便,因此您可以对其进行处理并对其进行迭代测试,而无需不断重建。

b是对a的依赖。您对b进行了更改,并想检查a是否仍然适用于这些更改。而不是使用从b安装的node_modules中的npm,而是使用本地的修改版本:

cd ~/projects/b    # go into the package directory
npm link           # creates global link
cd ~/projects/a    # go into some other package directory.
npm link b         # link-install the package

现在,对~/projects/b的任何更改都将反映在~/projects/a/node_modules/b/中。

答案 1 :(得分:0)

您是否将依赖项保存到package.json? 保存:npm install --save {package_name}。这会将软件包保存到package.json并使用npm install安装。

您不能完全控制依赖项。安装的依赖项可能自己在使用依赖项。因此,在删除软件包时,npm会删除所有软件包的依赖项和该软件包。

答案 2 :(得分:0)

如果您的开发流程涉及相互依赖的软件包的并行更新[strong],您可以考虑将项目的软件包管理器从npm切换到{{ 1}}来利用纱线的workspaces feature

纱线的工作区,您可以轻松设置包含所有相互关联的依赖项的单个monorepo ,并让yarn考虑如何将它们链接在一起您的开发环境。

答案 3 :(得分:0)

我今天遇到了类似的问题,并认为这可能会在将来对某人有所帮助,我发现如果您同时安装

npm install-保存package1 package2 package3 ...

它像我以前一样

npm install xlsx angular-oauth2-oidc

但是如果单独安装它将出现问题

编辑2 @Michael

提供的更多信息

在同一命令中安装多个软件包还可以防止钩子被多次安装

答案 4 :(得分:0)

在安装软件包时只需使用Yarn来安装软件包,而不要使用npm

yarn add package-name