如何解决npm install [package] 正在删除软件包
克隆存储库后,我运行 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-lock.json 删除了很多行(包括 @dealertrack/dms-shell-client-react 包,它是我项目的顶级依赖项)
我已经确认,在 npm ci
之后,@dealertrack
中有一个 node_module
文件夹被 npm install <package>
删除。
运行 npm install
,重新添加已删除的包
添加了 186 个贡献者的 186 个包,审核了 2426 个包 46.594s
但是,它也将 package-lock.json 中众多包的解析从公开的 registry.npmjs.org
更改为我们公司在 artifactory 中的 npm 存储库。
根据 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
添加回来的包。最后 this question 来自 5 个月前似乎暗示 npm 已损坏,修复方法是使用 yarn。
我没有看到运行 npm 7.6.3 的相同删除包行为(但这也会将 package-lock.json 更新为 v2,这意味着我需要让我的所有合作者进行更新。)
那么 npm 6.x.x 坏了吗?或者有没有有效的版本?
解决方法
我遇到了这个 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 ci
或 npm install
不在乎,但显然 npm prune
会。
所以,简而言之……我猜 npm 6 坏了…… 但也许这项工作会对某人有所帮助。
我还联系了维护相关软件包的内部团队,以了解他们为何从未发布 0.0.29 :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。