当前位置: 首页 > 面试题库 >

yarn.lock和npm的收缩包装有什么区别?

江瀚昂
2023-03-14
问题内容

最近,我尝试使用Yarn安装Node软件包。它运作良好,并且比NPM快得多。纱线自动生成yarn.lock。我们已经有NPM收缩包装(npm- shrinkwrap.json)。

它们之间有什么区别吗?是否yarn.lock有过NPM-shrinkwrap.json什么优势?


问题答案:

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一次,而纱线明确地使用相同“的安装算法是确定的,可靠的”。



 类似资料:
  • 我正在使用持续集成,并发现了npm ci命令。 我不知道对我的工作流使用此命令有什么好处。 更快吗?这会让考试变得更难吗,好吗,然后呢?

  • 本文向大家介绍npm i和npm install有什么区别?相关面试题,主要包含被问及npm i和npm install有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 用npm i安装的模块无法用npm uninstall删除,用npm uninstall i才卸载掉 npm i会帮助检测与当前node版本最匹配的npm包版本号,并匹配出来相互依赖的npm包应该提升的版本号 部分npm包在

  • 问题内容: 和之间的根本区别是什么?只需要简单明了的东西。我已经看到一些同事在他们的项目中使用和互换使用。 问题答案: 所有程序包管理器都有许多缺点。您只需要选择可以与之共存的地方即可。 History npm开始管理node.js模块(这就是默认情况下会放入软件包的原因),但是当与Browserify或webpack结合使用时,它也适用于前端。 Bower是专门为前端创建的,因此考虑到了优化。

  • 本文向大家介绍yarn和npm有什么区别?相关面试题,主要包含被问及yarn和npm有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 速度快 。速度快主要来自以下两个方面: 并行安装:无论 npm 还是 Yarn 在执行包的安装时,都会执行一系列任务。npm 是按照队列执行每个 package,也就是说必须要等到当前 package 安装完成之后,才能继续后面的安装。而 Yarn 是同步执行

  • 问题内容: 我在只有包的地方使用Java。我知道还有其他编程语言也包含模块。 有什么不同? 问题答案: 很难比较空白中的语义。(您还说什么其他语言?)“模块”可能类似于Java类,Java包或完全其他的东西,具体取决于该其他语言。通常,由于“模块”通常来自过程语言,因此我倾向于讲Java类,但是我认为那一线 很 模糊,您可以令人信服地争论一下程序包。

  • 问题内容: 和之间有什么区别? 我在项目中注意到,有时npm在执行时会开始失败,但是在运行时,它可以正常工作。 如何这两个目标的内部运作,即与不同? 问题答案: 将依赖项安装到您正在处理的节点项目的目录中。您可以调用另一个node.js项目(模块),以将其安装为项目的依赖项。 是的别名,除非您在package.json文件中指定“ build”的作用,否则它什么都不做。它使您可以在将其用于另一个项