为什么用yarn代替npm

1、速度快

2、并行安装。速度要比npm快的多

3、安装版本统一

4、更简洁的输出

5、多注册来源处理 所有的依赖包不管他被不同的仓库间管理引用多少次。安装这个包时。只会从一个注册来源去装,要么是npm 要么是bowser 防止混乱不一致

6、更好的语义化

yarn 安装也很简单

npm install -g yarn

以下来自官方文档。

官方文档:

Yarn 中文文档

优点

离线模式

如果你以前安装过某个包,再次安装时可以在没有任何互联网连接的情况下进行。

确定性

不管安装顺序如何,相同的依赖关系将在每台机器上以相同的方式安装。

网络性能

Yarn 有效地对请求进行排队处理,避免发起的请求如瀑布般倾泻,以便最大限度地利用网络资源。

相同的软件包

从 npm 安装软件包并保持相同的包管理流程。

网络弹性

重试机制确保单个请求失败并不会导致整个安装失败。

扁平模式

将依赖包的不同版本归结为单个版本,以避免创建多个副本。

对于大多数用户来说,从 npm 迁移应该是一个相当简单的过程。Yarn 可以使用与package.jsonnpm相同的格式,并且可以从 npm 注册表安装任何包。

如果您想在现有的 npm 项目上尝试 Yarn,只需尝试运行:

yarn

这将node_modules使用 Yarn 的解析算法来布置您的文件夹,该算法node.js 模块解析算法兼容 。

如果出现错误,请检查现有问题或将其报告给 Yarn 问题跟踪器

当您运行yarn或 时yarn add <package>,Yarn 将yarn.lock在您的包的根目录中生成一个文件。您无需阅读或理解此文件 - 只需将其签入源代码管理即可。当其他人开始使用 Yarn 而不是 时npm,该yarn.lock文件将确保他们获得与您完全相同的依赖项。

在大多数情况下,运行yarnyarn add第一次就可以了。在某些情况下,package.json文件中的信息不够明确,无法消除依赖,Yarn 选择依赖的确定性方式会遇到依赖冲突。这在较大的项目中尤其可能发生,这些项目有时npm install不起作用,开发人员经常node_modules从头开始删除和重建。如果发生这种情况,请npm在转换为 Yarn 之前尝试使用使依赖项的版本更加明确。

从 Yarn 1.7.0 开始,您可以导入npmYarn生成的package-lock.json状态,使用yarn import.

项目的其他开发人员可以继续使用npm,因此您无需让项目中的每个人同时进行转换。使用的开发者yarn都会得到完全相同的配置,使用的开发者npm得到的配置可能略有不同,这是npm.

稍后,如果您确定 Yarn 不适合您,您可以重新使用npm而不进行任何特定更改。yarn.lock如果项目中没有人再使用 Yarn,您可以删除旧文件,但这不是必需的。

如果您现在正在使用一个npm-shrinkwrap.json文件,请注意您最终可能会得到一组不同的依赖项。Yarn 不支持 npm shrinkwrap 文件,因为它们没有足够的信息来支持 Yarn 更具确定性的算法。如果您使用的是shrinkwrap 文件,则可以更轻松地将参与该项目的每个人同时转换为使用Yarn。只需删除现有npm-shrinkwrap.json文件并签入新创建的yarn.lock文件即可。

CLI 命令比较

高于海平面 (v5)


npm install

yarn add

(不适用)

yarn add --flat

(不适用)

yarn add --har

npm install --no-package-lock

yarn add --no-lockfile

(不适用)

yarn add --pure-lockfile

npm install [package] --save

yarn add [package]

npm install [package] --save-dev

yarn add [package] --dev

(不适用)

yarn add [package] --peer

npm install [package] --save-optional

yarn add [package] --optional

npm install [package] --save-exact

yarn add [package] --exact

(不适用)

yarn add [package] --tilde

npm install [package] --global

yarn global add [package]

npm update --global                  

yarn global upgrade                    

npm rebuild

yarn add --force

npm uninstall [package]

yarn remove [package]

npm cache clean

yarn cache clean [package]

rm -rf node_modules && npm install  

yarn upgrade                          

npm version major                    

yarn version --major                  

npm version minor                    

yarn version --minor                  

npm version patch                    

yarn version --patch