我正在使用指向git URL的传递依赖(不在GitHub上),并且我发现NPM在安装直接父依赖时会跳过这些依赖。
例如,假设我有package A
,它具有一个依赖项B
:
"B": "git+https://username:password@giturl.com/username/B"
Run Code Online (Sandbox Code Playgroud)
现在在一个新项目中C
,我安装A
。
npm i git+https://username:password@giturl.com/username/A
Run Code Online (Sandbox Code Playgroud)
现在,如果我查看C
的package.json和package-lock.json,我什么都找不到B
!有趣的是,如果我随后B
手动安装:
npm i git+https://username:password@giturl.com/username/B
Run Code Online (Sandbox Code Playgroud)
然后B
显示在C
的package.json和package-lock.json中,作为的传递依赖项A
和的直接依赖项C
。
还值得一提的是,仅在使用自定义git主机时,使用github.com时不会发生此行为。
有什么办法解决这个问题,所以我不必每次都手动安装所有传递依赖项?我希望NPM表现得像github.com。
我找到了一个解决方法,尽管我很困惑为什么NPM决定跳过这些依赖项。我认为这是一个错误并已提交报告。
我将该--global-style
标志添加到我的npm install
命令中,NPM 现在将安装我的传递依赖项,但现在我无法获得重复数据删除的好处。--legacy-bundling
(禁用重复数据删除)似乎也能解决问题 - 这让我相信问题出在重复数据删除上。
--global-style 参数将导致 npm 将包安装到本地 node_modules 文件夹中,其布局与全局 node_modules 文件夹使用的布局相同。只有您的直接依赖项才会显示在 node_modules 中,并且它们依赖的所有内容都将在其 node_modules 文件夹中展平。这显然会消除一些重复数据删除。
归档时间: |
|
查看次数: |
68 次 |
最近记录: |