yarn 和 npm 的主要区别是啥? [关闭]
Posted
技术标签:
【中文标题】yarn 和 npm 的主要区别是啥? [关闭]【英文标题】:What is main difference between yarn and npm? [closed]yarn 和 npm 的主要区别是什么? [关闭] 【发布时间】:2018-10-21 01:23:48 【问题描述】:我想问一下你最喜欢的 JS 包管理器是什么? 我看到了一些关于 yarn 和 npm 的文章。但我不确定什么对我更好。我刚开始学JS。
现在 yarn 和 npm 之间的区别对我来说就像可乐品牌之间的区别。
【问题讨论】:
我看了一些文章...但是文章的日期完全不同..所以我在这里询问 yarn 和 npm 用户的实际信息 【参考方案1】:有时我们只有 npm
,但它在解决依赖关系和缓存方面存在很多问题,因此诞生了另一个工具 (yarn
)。通常它使用本地缓存来解决依赖关系,例如在运行几乎总是在相同环境中运行的 CI 作业时,这是至关重要的,而且高带宽是昂贵的,因为您为云服务中的数据付费。这意味着在旧的 npm
版本中,当你运行 npm install
并且你有 let in deps 时
第一个注释
请理解yarn
是建立在npm
包和https://www.npmjs.com/ 之上的,这意味着它们都使用NPM
注册表来解析包。所以如果你运行npm install lodash@1.0.0.
或yarn add lodash@1.0.0.
你会得到完全相同的结果
增量安装
react@16.0.0
在每个新版本中,都会再次从 Internet 下载两个依赖项。 Yarn 在下面使用yarn.lock
,它将您的package.json
文件与yarn.lock
进行比较,并确定需要额外获取哪些包以仅增量安装新依赖项
多线程
yarn
提供不依赖于线程的包的并行安装。它可以将安装时间从npm install
减少到1/10
版本锁定
如前所述,yarn
在每次安装后生成yarn.lock
,它会保留已安装包的所有版本(你可能知道一个包可以有依赖项,一个依赖项也可以有自己的依赖项),因此它可以构建无限树可能导致非常严重的冲突的依赖关系。让我们想象一下这个场景
- lodash^1
- super_module@0.0.1
- - lodash@1.0.0
- another_module@0.0.01
- - lodash@1.x.x
想象一下,another_module
的维护者决定将 lodash 升级到破坏性更改版本 1.2.0
可能发生的情况是 npm
在过去可以获取同一库的 2 个不同实例,以及 2 个不同版本,这可能导致非常奇怪的行为。因为您的模块中没有精确锁定(您接受任何 semver 版本 ^1.xx 和 ^2.xx 所以这意味着两个子模块都会满足您的要求但获取不同的版本。Yarn 将锁定您的 yarn.lock
AT向项目添加新包的时间,这意味着当您项目中的其他开发人员检查项目时,他也将拥有相同的 yarn.lock
和 yarn
最终将“模仿”包的状态,当您安装它们时提交yarn.lock
另一方面NPM
只是看semver 的满意度,可以为2 个开发人员获取2 个不同的版本(假设及时升级包)
最后说明
npm
的人在发布 npm@5
时做了很多工作,我认为现在所有的陈述都是为什么创建 yarn
以及当时解决了哪些问题的原因,但我认为当前日期,这两个现在没有太大区别
【讨论】:
我几天前在别处回答了类似的问题,只是巧合,没有从任何地方复制:) @epascarello 是的,是的,它是怎么回事......这并不意味着当某人拥有 140k 声誉时,其他人必须创建一个 +15 声誉的帐户......你可以比较 ISP 的帐户或查看我的个人资料……如果我的答案不合法……那太荒谬了。请重新阅读此***.blog/2018/04/26/… 并重新考虑您刚才在该评论中提出的问题。谢谢 我在想 *** 不是那么恶劣的环境,但仍然感谢您的回答:D 最后一点对我很有帮助 npm :javascript 的包管理器。 npm 是 npm 生态系统的命令行界面。它经过实战考验,出奇的灵活,每天被成千上万的 JavaScript 开发人员使用。 Yarn:一个新的 JavaScript 包管理器。 Yarn 会缓存它下载的每个包,因此它永远不需要再次缓存。它还可以并行化操作以最大限度地利用资源,因此安装时间比以往任何时候都快。 我想知道 Webpack 适合在哪里,还有 Yarn 和 NPM...以上是关于yarn 和 npm 的主要区别是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
yarn.lock 和 npm 的 shrinkwrap 有啥区别?