栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

yarn和npm之间的主要区别是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

yarn和npm之间的主要区别是什么?

有时候我们只有一个,

npm
但是解决依赖性和缓存问题太多,以至于另一个工具诞生了(
yarn
)。通常,它使用本地缓存来解决依赖关系,例如,在运行几乎总是在同一环境中运行的CI作业时,这非常关键,并且当您为云服务中的数据付费时,高带宽非常昂贵。这意味着在旧
npm
版本中,当您奔跑
npminstall
而让部

yarn

请理解,它们

yarn
是基于
npm
软件包和https://www.npmjs.com/的顶部构建的,这意味着它们都使用
NPM
注册表来解析软件包。因此,如果您跑步
npminstall 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

版本锁定

如之前所述,在每次安装后都会

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
决定将破折号打破版本时
1.2.0
,会发生的事情是,
npm
在过去,可以获取同一库的2个不同实例,以及2个不同的版本,这可能导致极其奇怪的行为。因为你没有你的模块中准确锁定(你接受任何semver版本^
1.XX和^
2.xx的这样就意味着两个子模块将满足您的要求,但获取不同的版本。纱将锁定
yarn.lock
在当时向该项目添加新软件包,这意味着当项目中的其他开发人员签出该项目时,他也将拥有该软件包
yarn.lock
yarn
并最终“模仿”软件包的状态(当您
yarn.lock
以其他方式提交时,如何安装它们)
NPM

只是希望获得满意的服务,并且可以为2个开发人员获取2个不同的版本(假设及时升级了软件包)

最后说明

npm
发布时
npm@5
,有很多工作要做,我认为所有陈述现在都只是
yarn
创建WHY的原因以及当时正在解决的问题,但我认为目前为止,这两个之间的区别不大



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379936.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号