爱客仕-前端团队博客园

其实,我是一个yarn员

写在开始前

好久不见~这篇其实存在电脑已经多时,但是因为编译没过的问题也一直懒得解决,所以…

为了将功补过,先放个下期预告:
近期直播填webpack2的坑和设计模式第二弹,大家一起来收服神奇宝贝吧!

引子

最近一款新的工具Yarn渐渐的占据了大众视角,大有取代NPM的趋势
非死不可出品,必出精品
而且NPM的作者已经倒戈去给Yarn做开发了OTZ

NPM作为曾经的一代神器,曾带去了无数的欢声笑语,笑声回荡在空旷的操场(不知道为啥小学写作文很喜欢写笑声回荡在xxxxx)
但是你往往能发现廉颇老矣,否饭。

Yarn的初体验

很神奇的,Yarn竟然可以使用npm install来安装!这就好比:
“朕只想跟妃子生个龙子,你托马竟然想谋朝篡老子位”

1
npm install yarn -g

当我们生了个龙子后啊不,当我们安装完yarn后,就可以体验yarn的神奇功效了

作为程序员,第一要务是什么?偷懒。
程序员的梦想是什么?尽可能的偷懒
————程序员定理

每次都需要npm i –save xxx / npm i –save-dev xxx 实在是让人痛苦万分,就算简化成 npm i -S 或是 npm i -D 也很累
为啥就不能直接 npm i 就帮我默认放进dependecy下面去???

别急,yarn真的就做到了

1
yarn add jquery

就是这么简单粗暴

当npm安装包不存在的版本的时候,npm提示出这个包有以下包,您是不是弄错包了?

1
2
3
npm ERR! notarget 2.1.0, 2.0.0, 2.0.0-rc.3, 2.0.0-rc.2, 2.0.0-rc.1, 2.0.0-rc.0, 2.0.0-beta.5, 2.0.0-beta.4, 2.0.0-beta.3, 2.0.0-beta.2,
2.0.0-beta.1, 2.0.0-beta.0, 1.0.1, 1.0.0, 0.9.1, 0.9.0, 0.8.2, 0.8.1, 0.8.0, 0.7.1, 0.7.0, 0.6.0, 0.5.0, 0.4.0, 0.3.8, 0.3.7, 0.3.6, 0.3.5,
0.3.4, 0.3.3, 0.3.2, 0.3.1, 0.3.0, 0.2.5, 0.2.4, 0.2.3, 0.2.2, 0.2.1, 0.2.0, 0.1.2, 0.1.1, 0.1.0

如此贴心,真是谢谢您了。

因为yarn的话,你能发现错误包版本的时候它会直接进入列表选项你可以上下选择,而不是直接退出整个环境

什么以上还不能打动你去使用yarn?那没办法了,只能放大招了:

yarn的安装效率是npm的五倍!!!对,你没有听错,不要2000,不要1000,不要998,只要5倍!

npm只是一个简单的单线程装包client, 下一个包只能是当前包安装完以后才能继续安装
但是yarn被非死不可一改造,可以多线程同时安装,而且,yarn能缓存下安装过的包,下次直接读取缓存安装。想不快都有点难。

更不用说,Yarn谣传能断网的情况下离线下载缓存(因为我没成功过OTZ)

Yarn还可以锁定版本,保证同团队中的所有人都能用相同版本进行开发

Yarn 与 NPM

这里放上一张偷来的对比图:

1
2
3
4
5
6
7
8
9
10
NPM YARN 说明
npm init yarn init 初始化某个项目
npm install/link yarn install/link 默认的安装依赖操作
npm install taco —save yarn add taco 安装某个依赖,并且默认保存到package.
npm uninstall taco —save yarn remove taco 移除某个依赖项目
npm install taco —save-dev yarn add taco —dev 安装某个开发时依赖项目
npm update taco —save yarn upgrade taco 更新某个依赖项目
npm install taco --global yarn global add taco 安装某个全局依赖项目
npm publish/login/logout yarn publish/login/logout 发布/登录/登出,一系列NPM Registry操作
npm run/test yarn run/test 运行某个命令

基本可以0成本迁移吧?
给个传送门

以上,还有什么不去用的理由吗?