NPM - 如何安装指向 git URL 的传递依赖项?



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

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

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

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

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

现在,如果我查看C的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 一样。

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

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

--

global-style 参数将导致 npm 将软件包安装到 您的本地node_modules文件夹,其布局与 全局node_modules文件夹。只有您的直接依赖项将显示在 node_modules和他们所依赖的一切都将在他们的 node_modules文件夹。这显然会消除一些重复数据删除。

最新更新