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

我想问一下您最喜欢JS的软件包管理器是什么?我看到了一些关于yarn和npm的文章。但是我不确定有什么对我更好。我刚刚开始学习JS。

现在,yarn和npm之间的差异对我来说就像可乐品牌之间的差异。

回答:

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

install而让部

yarn

请理解,它们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

版本锁定

如之前所述,在每次安装后都会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.lockyarn并最终“模仿”软件包的状态(当您yarn.lock以其他方式提交时,如何安装它们)NPM

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

最后说明

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

以上是 yarn和npm之间的主要区别是什么? 的全部内容, 来源链接: utcz.com/qa/419024.html

回到顶部