我试图用几个软件包来设置开发环境,因此,我需要手动安装一些依赖项。更具体地说,在将它们推送到github之前,我需要测试几个软件包中的一些本地更改,因此我不能只是npm install
的顶层,因为它不会接受那些更改。因此,我在缺少的软件包上手动运行了第一个npm install
,然后尝试运行我的节点代码并查看它仍然缺少哪个软件包,然后尝试npm install
它说了什么丢失。>
但是,当我去安装第二个软件包时,它最终显示以下消息:
added 3 packages from 4 contributors, removed 799 packages and audited 3 packages in 4.197s
第二次安装实际上删除了已经安装的每个软件包!我直到第三次才意识到这一点,当时我意识到自己似乎一遍又一遍地安装相同的东西。
但是我如何防止这种特别顽皮的行为,并迫使npm只安装我告诉它的内容,而让其他所有内容都不显示?
答案 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