该
yarn.lock文件与其他程序包管理器的锁定文件非常相似,尤其是Rust的Cargo程序包管理器具有
Cargo.lock。这些锁定文件的想法是代表一组始终有效的软件包。
npm将依赖关系范围存储在
package.json文件中,这意味着当有人安装您的软件包时,他们可能会获得与您不同的依赖关系集,因为您可能正在运行过时的软件包(尽管它们仍然满足您指定的依赖关系范围)。例如,某人指定了dependency
"foo": "^1.0.0"。他们可能实际上已经安装了foo v1.0.1,因为这是他们运行时的最新
npminstall版本,但是后来,有人安装了您的软件包并获得了依赖项foo v1.1.0。这可能会意外破坏某些内容,如果您有一个
yarn.lock保证
一致的包解析度 的文件,可以避免这种情况。
至于与的比较
npm shrinkwrap,文档非常清楚地说明了这一点:
它类似于npm的npm-shrinkwrap.json,但是它不是有损的,并且可以产生可重复的结果。
该文档还建议
yarn.lock您提交到存储库(如果您尚未这样做的话),这样您就可以从一致且可重复的包解析中受益。
的有损行为
npm shrinkwrap是由于其
npm自身使用的不确定性算法;作为另一个答案的评论指出,
npm shrinkwrap>
npminstall>
npmshrinkwrap并不能保证产生输出作为刚刚shrinkwrapping一次,而纱线明确地使用相同“的安装算法是确定的,可靠的”。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)