NPM软件包无法锁定其依赖项(和依赖项的依赖项),例如:
{
"name": "my-package",
"version": "1.0.0",
"dependencies": {
"someDep": "^1.2.3"
}
}
my-package@1.0.0
现在取决于someDep@^1.2.3
。
如果某天someDep
升级到1.9.0
,并且我在没有npm install my-package@1.0.0
或package.lock
的项目中运行yarn.lock
,则会安装someDep@1.9.0
在someDep@1.2.3
和someDep@1.9.0
之间可能引入了一些重大更改,它们将导致my-package@1.0.0
被破坏。
如果我将someDep
的版本设置为固定在1.2.3
上,如下所示:
{
"name": "my-package",
"version": "1.0.0",
"dependencies": {
"someDep": "1.2.3"
}
}
我当然可以将someDep
的版本锁定为1.2.3,但是我不能强迫someDep
的依赖项也进行修复,以使它们也可以使我失望。
我们该怎么做才能保证NPM软件包的长期正确性?