npm - 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 一样。
解决方案
我找到了一种解决方法,尽管我对为什么NPM 决定跳过这些依赖项感到困惑。我假设这是一个错误并已提交报告。
我将--global-style
标志添加到我的npm install
命令中,NPM 现在将安装我的传递依赖项,但现在我没有获得重复数据删除的好处。--legacy-bundling
(禁用重复数据删除)似乎也能解决问题——这让我相信问题在于重复数据删除。
--global-style 参数将导致 npm 以与全局 node_modules 文件夹相同的布局将包安装到本地 node_modules 文件夹中。只有您的直接依赖项将显示在 node_modules 中,并且它们所依赖的所有内容都将在它们的 node_modules 文件夹中展平。这显然会消除一些重复数据删除。
推荐阅读
- python - 如何在 Clickhouse-driver 中获取 JSON 格式的数据
- angular - Angular ng-select - bindValue 不起作用,仍然绑定到整个对象
- python - 间歇性'NoAuthHandlerFound' boto 错误 | django + kinesis 客户端
- c# - 内存映射文件是否支持 uwp 应用程序和 win32 进程之间的 ipc
- apache-kafka - Kafka SSL 不将数据流式传输到 SSL Druid
- sql - 匹配 pgdump 中的多行 SQL 语句
- java - 尽管我添加了 return 语句,但我得到了我必须添加 return 语句的错误
- django - 如何在 Django 中创建一个不需要提供默认函数的 UUIDField,而是返回由数据库生成的 UUID?
- mongodb - 使用 mongDB 聚合函数中的条件进行计数
- json - ARKit 4.0 – 是否可以将 ARWorldMap 数据转换为 JSON 文件?