Yarn 是一個(gè)新的包管理器,用于替代現(xiàn)有的 npm 客戶端或者其他兼容 npm 倉庫的包管理工具辆它。Yarn 保留了現(xiàn)有工作流的特性,優(yōu)點(diǎn)是更快履恩、更安全锰茉、更可靠。
為什么用yarn
非城行模快飒筑,非常非常快
yarn 緩存了每次你下載的模塊绽昏,所以同樣模塊同樣的版本不會(huì)發(fā)送第二次下載請(qǐng)求协屡,對(duì)于沒有緩存的模塊, yarn 也可以通過并行的網(wǎng)絡(luò)請(qǐng)求最大限度利用網(wǎng)絡(luò)資源∪現(xiàn)在真的是沒有什么幾十秒安裝不完的依賴的肤晓。一個(gè) 50 個(gè)依賴的 webpack + babel 項(xiàng)目可以在 20 秒左右安裝完成。
安全
yarn在開始安裝一個(gè)包之前會(huì)先用 checksums 來驗(yàn)證认然,你不用擔(dān)心本地的緩存的包被破壞了導(dǎo)致安裝失敗材原。
可靠
被一群喜歡喵星人的開發(fā)者維護(hù),以及有 FaceBook 在 production 環(huán)境中使用季眷。完善的測(cè)試和基于 flow type 的 code base。保證各平臺(tái)依賴的一致性卷胯。
網(wǎng)絡(luò)優(yōu)化
力求網(wǎng)絡(luò)資源最大利用化子刮,讓資源下載完美隊(duì)列執(zhí)行,避免大量的無用請(qǐng)求窑睁,下載失敗會(huì)自動(dòng)重新請(qǐng)求挺峡,避免整個(gè)安裝過程失敗
扁平化模式
對(duì)于不匹配的依賴版本的包創(chuàng)立一個(gè)獨(dú)立的包,避免創(chuàng)建重復(fù)的担钮。
以及很多令人感動(dòng)的小改進(jìn)
- 有些 npm 包會(huì)拋出 warning 提示信息橱赠,在一起 npm install 的時(shí)候只有一個(gè)名字你完全不知道是哪個(gè)包的哪個(gè)包的哪個(gè)包拋出的這個(gè)信息,而 yarn 改善了這一點(diǎn)箫津。
-
yarn ls
會(huì)高亮出所有在 package.json 的 dependencies 里的依賴狭姨,增強(qiáng)可讀性。 - 每一條命令都會(huì)顯示執(zhí)行的時(shí)間苏遥。
- 默認(rèn)生成 lockfile . 保證 yarn 每次安裝相同版本的依賴饼拍,npm shrinkwrap 會(huì)喪失掉同步性如果你忘了生成它。
-
yarn why <name>
這條命令可以告訴你為什么一個(gè)依賴會(huì)被安裝到你的項(xiàng)目中田炭。
安裝
安裝yarn其實(shí)非常簡(jiǎn)單师抄,可以使用npm進(jìn)行安裝yarn包。其官網(wǎng)也有相應(yīng)的安裝文檔:yarn docs
$ npm install -g yarn
安裝完成之后可以查看版本號(hào)
$ yarn --version
或者
$ yarn -v
使用
初始化
切換到自己的項(xiàng)目目錄教硫,執(zhí)行
$ yarn init
然后照著提示依次輸入?yún)?shù)就OK了叨吮。
如果覺得麻煩辆布,可以直接執(zhí)行
$ yarn init -y
這樣可以直接創(chuàng)建最簡(jiǎn)的一個(gè)項(xiàng)目。其中包含了package.json文件茶鉴。
添加包依賴
接下來可以直接在此添加包依賴了,會(huì)自動(dòng)安裝最新版本锋玲,注意會(huì)覆蓋指定版本號(hào)
$ yarn add [package]@[version]
或者
$ yarn add [package]@[tag]
你會(huì)發(fā)現(xiàn),在客戶端會(huì)打印一出一堆信息如下蛤铜,添加jquery依賴:
$ yarn add jquery
yarn add v0.21.3
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
█████████████████████?????????????????????????????????????
█████████████████████████████████?????????????
████████████████████████████████████████
████████████████████████████████████████
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
└─ jquery@3.2.1
Done in 4.28s.
這時(shí)在當(dāng)前目錄中自動(dòng)添加了一個(gè)yarn.lock文件嫩絮,用于記錄所有的包依賴信息。
更新包依賴
更新某包
$ yarn update [package]
更新指定版本的包
$ yarn update [package]@[version]
更新到指定某個(gè)標(biāo)簽上的包
$ yarn update [package]@[tag]
移除依賴
$ yarn remove [package]
后面的參數(shù)可以與更新包的類似围肥。
開工
在多人團(tuán)隊(duì)協(xié)作的時(shí)候剿干,拉到代碼之后,可以類似于npm一樣穆刻,執(zhí)行
$ yarn install
即可以開工啦置尔!
總結(jié)
yarn管理器有一個(gè)很重要的文件需要注意,就是yarn.lock氢伟,這個(gè)是用來依賴的正確性榜轿,快速可靠安裝的;是執(zhí)行cli的時(shí)候自動(dòng)生成的朵锣,在項(xiàng)目的根目錄下谬盐,需要保留!3闲7煽!不要編輯它诬烹,這是自動(dòng)生成的