上一篇簡單介紹了NPM包管理工具 在這篇文章中 我想給大家介紹一個(gè)取代使用NPM的包管理工具——Yarn 以及它與NPM之間的差異

這個(gè)就是Yarn的logo,應(yīng)該是一只貓 Yarn的官網(wǎng):傳送門 來到官網(wǎng),映入眼簾的就是這么幾個(gè)大字(大單詞~)

富強(qiáng),民主,文明,和諧…… 那是不可能的~ 這行英語的意思是: 極速、可靠、安全的依賴關(guān)系管理
Yarn是Facebook、Google、Exponent和Tilde開發(fā)的一款新的javaScript包管理工具(開源) Facebook對于Github的貢獻(xiàn)確實(shí)是有目共睹的,僅次于微軟 開發(fā)Yarn意在解決了使用npm時(shí)面臨的少數(shù)問題
安裝巨慢無比npm安裝時(shí)可以運(yùn)行代碼,不安全……我的電腦是Windows操作系統(tǒng) 按照官網(wǎng)的說明,下載.msi安裝包 下載之前也必須有NodeJS

一步一步next就好了
還有一種方法官網(wǎng)沒說直接通過命令行 我也是通過這種方法下載的 輸入命令:npm intall -g yarn 不過我是卡了好幾遍才下好(網(wǎng)太卡傷不起)
下載完畢后輸入命令 yarn --version 查看版本 
使用和npm是類似的 初始化包yarn init 
這里我一開始用git bash發(fā)現(xiàn)不好使,會(huì)報(bào)錯(cuò) 
后來還是老實(shí)的用cmd命令行
其實(shí)npm的命令和yarn大多相通的 只需要把npm換成yarn 不過還是有些不同的 添加包依賴使用命令:yarn add <package> 它相當(dāng)于npm命令:npm install <package> --save 也就是說它會(huì)自動(dòng)將下載包以及版本信息寫入package.json的dependencies
yarn常用的命令以及和npm的對照如下
| yarn命令 | 含義 | npm命令 |
|---|---|---|
yarn | 根據(jù)package.json安裝依賴 | npm install |
yarn init | 初始化包 | npm init |
yarn add <package> | 安裝依賴并寫入dependencies | npm install <package> --save |
yarn global add <package> | 全局安裝依賴并寫入dependencies | npm install <package> -g --save |
yarn add <package> --dev/-D | 安裝依賴并寫入devDependencies | npm install <package> --save-dev |
yarn upgrade <package> | 升級包版本 | npm update <package> --save |
yarn remove <package> | 卸載包 | npm uninstall <package> --save |
更詳細(xì)的請查看官方文檔
當(dāng)我們下載依賴的時(shí)候,會(huì)發(fā)現(xiàn)目錄下多了yarn.lock文件 它是很重要的文件,不要?jiǎng)h掉它

轉(zhuǎn)移到其他電腦的時(shí)候,要連同package.json和yarn.lock文件一起拷貝 然后輸入命令 yarn下載模塊
這個(gè)yarn.lock有什么好處呢?
使用NPM的時(shí)候,如果擁有相同package.json的兩臺(tái)電腦子安裝了不同版本的包 就可能會(huì)產(chǎn)生一些問題 而Yarn為了避免包版本的錯(cuò)誤匹配,將確定的安裝版本固定這個(gè)鎖文件yarn.lock中 每次添加模塊,Yarn就會(huì)更新(首次創(chuàng)建)yarn.lock 文件 這樣我們轉(zhuǎn)移到其他電腦,也可以匹配為相同版本的模塊 避免了版本不同產(chǎn)生的問題 (也就是查看package.json配置文件前,會(huì)先查看yarn.lock鎖文件)
實(shí)際上NPM也可以實(shí)現(xiàn)類似的功能 使用 npm shrinkwrap 命令可以生成一個(gè)鎖文件 但是使用NPM我們每次都需要手動(dòng)“上鎖” 而Yarn會(huì)自動(dòng)更新 yarn.lock
想談一談yarn較npm的優(yōu)勢 把優(yōu)勢放在最后將確實(shí)有點(diǎn)奇怪 這也算有使用心得體驗(yàn)的成分
急速 下載速度真的很快,下載任務(wù)是并行下載,而npm是按順序一個(gè)一個(gè)下緩存 會(huì)緩存下載過的包,下載過的包甚至可以離線下載,npm就不能清晰 輸出不像npm一點(diǎn)兒也不冗余,并且進(jìn)度條很形象,誰用誰知道安全 下載前會(huì)檢查簽名及包的完整性可靠 各平臺(tái)依賴一致性,yarn.lock自動(dòng)更新優(yōu)化 下載失敗自動(dòng)重新請求,以及對網(wǎng)絡(luò)資源最大化利用,避免無用請求綜上,Yarn前途無量
==主頁傳送門==
新聞熱點(diǎn)
疑難解答
圖片精選