npm install [package] 正在删除包

npm install [package] is removing packages

克隆回购后,我 运行 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> 删除了。

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

added 186 packages from 186 contributors and audited 2426 packages in 46.594s

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

根据 this question & answer,npm 5.7 中存在一个 p运行ing 错误,该错误已在 5.7.1 中修复。但我在 6.9.0(由 nvm-windows 与节点 10.16.0 一起安装)和 6.14.11.

中都看到了这一点

我 运行 在另一个类似的问题(我现在找不到)中显示了被 npm install <package> 删除并被 npm install 添加回来的包。最后,5 个月前的 似乎暗示 npm 已损坏,解决方法是使用 yarn。

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

那么 npm 6.x.x 坏了吗?或者是否有可用的版本?

我 运行 跨越这个 npm 错误报告 npm ci behaves incorrectly with some version numbers
其中有一个 link 到存档 post
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 的原因:)