首页 > 解决方案 > NPM - 如何安装指向 git URL 的传递依赖项?

问题描述

我正在使用指向 git URL(不在 GitHub 上)的传递依赖项,我发现 NPM 在安装直接父依赖项时会跳过这些依赖项。

例如,假设我有 package A,它有一个依赖B

"B": "git+https://username:password@giturl.com/username/B"

现在在一个新项目中C,我安装A.

npm i git+https://username:password@giturl.com/username/A

现在,如果我查看C's package.json 和 package-lock.json,我找不到B任何地方!有趣的是,如果我B手动安装:

npm i git+https://username:password@giturl.com/username/B

然后B出现在C的 package.json 和 package-lock.json 中,既A作为C.

还值得一提的是,这种行为在使用 github.com 时不会发生,只有在使用自定义 git 主机时才会发生。

有没有办法解决这个问题,所以我不必每次都手动安装所有的传递依赖项?我希望 NPM 的行为与 github.com 一样。

标签: npmnpm-install

解决方案


我找到了一种解决方法,尽管我对为什么NPM 决定跳过这些依赖项感到困惑。我假设这是一个错误并已提交报告

我将--global-style标志添加到我的npm install命令中,NPM 现在将安装我的传递依赖项,但现在我没有获得重复数据删除的好处。--legacy-bundling(禁用重复数据删除)似乎也能解决问题——这让我相信问题在于重复数据删除。

--global-style 参数将导致 npm 以与全局 node_modules 文件夹相同的布局将包安装到本地 node_modules 文件夹中。只有您的直接依赖项将显示在 node_modules 中,并且它们所依赖的所有内容都将在它们的 node_modules 文件夹中展平。这显然会消除一些重复数据删除。


推荐阅读