首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >yarn.lock和npm的封装有什么不同?

yarn.lock和npm的封装有什么不同?
EN

Stack Overflow用户
提问于 2016-10-15 17:42:22
回答 2查看 18.4K关注 0票数 58

最近,我尝试用Yarn安装我的Node包。它工作得很好,而且比NPM快得多。Yarn自动生成yarn.lock。我们已经有了NPM收缩包(npm-shrinkwrap.json)。

它们之间有什么不同吗?yarn.lock比npm-shenshwrap.json有优势吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-15 17:50:38

yarn.lock文件与其他包管理器的锁文件非常相似,尤其是Rust的Cargo包管理器,它具有Cargo.lock。这些锁文件的思想是表示一组应该始终有效的一致的包。

npm将依赖项范围存储在package.json文件中,这意味着当有人安装您的软件包时,他们可能会获得一组与您不同的依赖项,因为您可能正在运行过时的包(尽管它们仍然满足您指定的依赖项范围)。例如,某个指定了依赖项"foo": "^1.0.0"的人。他们可能实际上安装了foov1.0.1,因为这是他们运行npm install时的最新版本,但后来,有人安装了您的软件包并获得了依赖foov1.1.0。这可能会意外地破坏一些东西,如果你有一个yarn.lock文件来保证一致的包解析,就可以避免这种情况。

至于与npm shrinkwrap的比较,the documentation解释得非常清楚:

它类似于npm的npm-shenshwrap.json,但是它不是有损的,并且它创建了可重现的结果。

文档还建议将yarn.lock提交到您的存储库,如果您还没有这样做的话,这样您就可以获得一致和可重复的包解析的好处。This question还进一步解释了为什么应该这样做。

npm shrinkwrap的有损行为是由于npm本身使用的非确定性算法;正如另一个答案的评论中所述,npm shrinkwrap > npm install > npm shrinkwrap不能保证产生与只收缩一次相同的输出,而Yarn明确使用"an install algorithm that is deterministic and reliable"

票数 55
EN

Stack Overflow用户

发布于 2016-10-15 17:52:18

它们之间有什么不同吗?

npm shrinkwrap相比,Yarn遵循更具确定性的算法。如果您正在使用Yarn,则继续使用包络处理将与直觉相悖

你可以在documentation for yarn.lock中找到这个

它类似于npm的npm-shenshwrap.json,但是它不是有损的,并且它可以创建可重现的结果

然而,问题仍然存在,纱线是否已经准备好生产。GitHub代码库上还有一堆明显的bug,所以我会等一个月左右。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40057469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档