为什么 npm shrinkwrap 用 url 替换来自字段的版本名称?

Why does npm shrinkwrap replace a version designation with a url for the from field?

我更改了我正在处理的包的名称,因此我重新运行了 npm shrinkwrap。我没有更改其他依赖项的任何字段。

我注意到 npm shrinkwrap 将 pg 包的 "from" 属性 从以下位置更改为:

"from": "pg@>=4.0.0 <5.0.0",

"from": "https://registry.npmjs.org/pg/-/pg-4.5.6.tgz",

并且很好奇为什么会这样。

找到了解释它的线程: https://github.com/npm/npm/issues/9550

总而言之,如果您在第一次 运行 shrinkwrap 之后删除 node_modules,然后再次 运行 shrinkwrap,则这与删除有关。一旦 shrinkwrap 文件就位,各个库的 package.json 文件(构建 npm-shrinkwrap.json 文件)的构造就会不同。