Fiz*_*han 53 node.js npm yarnpkg
最近我尝试用Yarn安装我的Node包.它运行良好,比NPM快得多.纱线自动生成yarn.lock.我们已经有了NPM shrinkwrap(npm-shrinkwrap.json).
它们之间有什么区别吗?是否yarn.lock有过NPM-shrinkwrap.json什么优势?
Aur*_*001 50
该yarn.lock文件与其他软件包管理器的锁文件非常相似,特别是Rust的Cargo软件包管理器Cargo.lock.这些锁定文件的想法是表示应该始终有效的一致的包.
npm将依赖项范围存储在package.json文件中,这意味着当有人安装您的软件包时,他们可能会获得一组不同的依赖项,因为您可能正在运行过时的软件包(尽管它们仍然满足您指定的依赖项范围).举例来说,指定了依赖关系的人"foo": "^1.0.0".他们可能实际上安装了foo v1.0.1,因为这是他们运行时的最新npm install版本,但是稍后,有人会安装你的软件包并获得依赖关系foo v1.1.0.这可能会意外地破坏某些内容,如果您有一个yarn.lock保证一致的程序包解析的文件,则可以避免这种情况.
至于比较npm shrinkwrap,文档非常清楚地解释:
它类似于npm的npm-shrinkwrap.json,但它不是有损的,它可以产生可重复的结果.
yarn.lock如果您还没有这样做,文档还建议您提交存储库,这样您就可以获得一致且可重复的包解析的好处.这个问题还解释了为什么要这样做.
有损行为npm shrinkwrap是由于npm自身使用的非确定性算法; 作为另一个答案的评论指出,npm shrinkwrap> npm install> npm shrinkwrap并不能保证产生输出作为刚刚shrinkwrapping一次,而纱线明确地使用相同"的安装算法是确定的,可靠的".
他们之间有什么区别吗?
与之相比,纱线遵循更确定的算法npm shrinkwrap.如果您正在使用Yarn,继续使用shrinkwrap会违反直觉
您可以在以下文档中yarn.lock找到:
它类似于npm的npm-shrinkwrap.json,但它不是有损的,它可以产生可重复的结果
然而,问题仍然是纱线是否已准备就绪.在GitHub回购中还有一堆明显的错误,所以我会等一个月左右.
| 归档时间: |
|
| 查看次数: |
16079 次 |
| 最近记录: |