【问题标题】:npm install [package] is removing packagesnpm install [package] 正在删除包
【发布时间】:2021-03-23 05:33:16
【问题描述】:

克隆一个 repo 后,我运行 npm ci 并返回 added 2425 packages in 413.413s

添加一个新包,npm install js-file-download

+ js-file-download@0.4.12
added 1 package from 1 contributor, removed 186 packages and audited 2240 packages in 33.76s

package.json 添加了一行

但是 package-lock.json 删除了很多行(包括我项目的顶级依赖项 @dealertrack/dms-shell-client-react 包)

我已经确认,在npm ci 之后,node_module 中有一个@dealertrack 文件夹被npm install <package> 删除。

运行npm install,重新添加删除的包

添加了来自 186 个贡献者的 186 个包,并审核了 2426 个包 46.594s

但是,它也将 package-lock.json 中众多包的解析从 public registry.npmjs.org 更改为我们公司在 artifactory 中的 npm repo。

根据this question & answer,npm 5.7 中有一个修剪错误,已在 5.7.1 中修复。但我在 6.9.0(由 nvm-windows 与节点 10.16.0 一起安装)和 6.14.11 中都看到了这一点。

我遇到了另一个类似的问题(我现在找不到),显示由npm install <package> 删除并由npm install 添加回来的包。最后,来自 5 个月前的 this question 似乎暗示 npm 已损坏,修复方法是使用 yarn。

我没有看到运行 npm 7.6.3 的相同删除包行为(但这也会将 package-lock.json 更新到 v2,这意味着我需要让我的所有协作者进行更新。)

npm 6.x.x 坏了吗?或者有没有可以使用的版本?

【问题讨论】:

    标签: npm npm-install


    【解决方案1】:

    我遇到了这个 npm 错误报告 npm ci behaves incorrectly with some version numbers
    其中有一个存档帖子的链接
    npm prune –production (after npm ci only) erroneously uninstalls regular dependency

    所以我开始研究如何指定 @dealertrack 包。

    我变了

    "@dealertrack/dms-shell-client-react": "0.0.29-41-c0de2"
    

    "@dealertrack/dms-shell-client-react": "^0.0.29-41"
    

    并且npm ci 成功完成。

    然后我安装了js-file-download 包,只添加了1个包,没有删除任何内容。

    + js-file-download@0.4.12
    added 1 package from 1 contributor and audited 2426 packages in 49.746s
    

    package-lock.json 有以下变化...

         "@dealertrack/dms-shell-client-react": {
    -      "version": "0.0.29-41-c0de2",
    +      "version": "0.0.29-41c0de2",
    

    +    "js-file-download": {
    +      "version": "0.4.12",
    +      "resolved": "https://artifactory.coxautoinc.com/artifactory/api/npm/cai-npm/js-file-download/-/js-file-download-0.4.12.tgz",
    +      "integrity": "sha1-EMcO82JVmlsjzb3DvW85nD2R2CE="
    +    },
    

    另外,另一个npm ci也成功完成了。

    现在我离成为 node/npm 专家还差得很远……但在我看来,0.0.29-41-c0de2 根据语义版本控制规则不是有效版本。但这实际上是我们内部工件存储库中的内容。不知道为什么 npm cinpm install 不在乎,但显然 npm prune 不在乎。

    所以,简而言之……我猜 npm 6 坏了…… 但也许这个工作循环会对某人有所帮助。

    我还联系了维护相关软件包的内部团队,以了解他们为什么从未发布 0.0.29 :)

    【讨论】:

      猜你喜欢
      • 2018-07-28
      • 1970-01-01
      • 2018-03-24
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多