yarn英文官網(wǎng)
yarn是軟件包管理器褪子,允許世界上所有開發(fā)人員一起使用和共享代碼,同時也是一個項目管理工具轻抱。使用yarn可以使項目安全飞涂、穩(wěn)定,且可更容易復(fù)用祈搜。
yarn可以適用于小型項目或大型單體倉庫较店。
yarn具有很多其他開發(fā)者共享的插件,我們在使用yarn時可以使用其他開發(fā)者的共享出來的插件來解決開發(fā)中遇到的問題夭问,如果使用過程中遇到問題泽西,我們可以在對應(yīng)網(wǎng)站上使用issue進行報告問題或反饋,當(dāng)問題修復(fù)后缰趋, 我們可以使用 Yarn 來更新這個解決方案捧杉,讓它更新為被修復(fù)后的最新狀態(tài)。
代碼通過稱為package(包)的東西共享秘血。一個package包含所有共享的代碼以及一個描述該package的package.json文件(稱為manifest(清單))味抖。
安裝
一、全局安裝
在整個系統(tǒng)中使用單個包管理器一直是一個問題灰粮。為了穩(wěn)定仔涩,安裝需要跨環(huán)境使用相同的包管理器版本,否則就會有在在版本之間引入意外破壞性更改的風(fēng)險 - 畢竟粘舟,這就是為什么首先引入鎖文件的概念熔脂!由于 Yarn 在某種意義上是您的第一個項目依賴項,因此“鎖定”它也應(yīng)該是有意義的柑肴。?
因此霞揉,Yarn 2 及更高版本旨在按項目進行管理。別擔(dān)心晰骑,變化不大适秩!只需確保首先安裝我們將用于生成本地的全局 Yarn 二進制文件:?
npm install -g yarn
使用 yarn --vesion查看yarn是否安裝成功,及其對于版本號。?
類似1.22的信息秽荞,
全局安裝的 Yarn 是屬于 “經(jīng)典版本” 序列(即 1.x)骤公,這正是yarn開發(fā)者所期待的,這個系統(tǒng)的一個額外好處是扬跋,為 Yarn 1 配置的項目將繼續(xù)使用它阶捆,而不是突然必須遷移到 2.x 配置格式。如果Yarn從一開始就被“鎖定”了钦听,我們就不需要這么做了趁猴。
二、項目安裝
全局安裝 Yarn 的最新版本:
npminstall-gyarn
進入你的項目文件夾:
cd~/path/to/project
運行以下命令:
yarnsetversion berry
"Berry" 是 Yarn 2 發(fā)布序列的代號彪见,同時也是我們的 代碼倉庫 的名稱!
提交新增和修改過的文件娱挨。參見 哪些文件需要被添加到 .gitignore 配置文件中余指?
大型項目的構(gòu)建,最終目的需要持續(xù)高質(zhì)量的生產(chǎn)在各種終端平臺上可交付部署的代碼跷坝。
三酵镜、更新到最新版本
如果您以后想將 Yarn 更新到最新版本,只需運行:
yarnsetversion latest
然后 Yarn 將從我們的網(wǎng)站下載最新的二進制文件柴钻,并將其安裝到您的項目中淮韭。不要忘記運行新安裝來更新依賴項,更新結(jié)果贴届!
四靠粪、安裝 master 分支的最新構(gòu)建版本
隨著時間的推移,即使最新版本也不夠新了毫蚓,那么你可能希望嘗試最新的 master 代碼分支占键,以檢查 Bug 是否已修復(fù)。這在 Yarn 2 中已經(jīng)變得非常簡單了元潘!只需運行以下命令即可:
yarnsetversion from sources
同樣的畔乙,還可以使用 --branch 參數(shù)來指定要安裝特定的 PR:
yarnsetversion from sources--branch1211
yarn和npm的區(qū)別
npm缺陷
npm install速度巨慢。
同一個項目翩概,安裝的時候無法保持一致性牲距。由于package.json文件中版本號的特點,下面三個版本號在安裝的時候代表不同的含義钥庇。
"5.0.3", ? //“5.0.3”表示安裝指定的5.0.3版本
"~5.0.3",? // “~5.0.3”表示安裝5.0.X中最新的版本
"^5.0.3"http://“^5.0.3”表示安裝5.X.X中最新的版本
這就麻煩了牍鞠,常常會出現(xiàn)同一個項目,有的同事是OK的上沐,有的同事會由于安裝的版本不一致出現(xiàn)bug皮服。
安裝的時候,包會在同一時間下載和安裝,中途某個時候龄广,一個包拋出了一個錯誤硫眯,但是npm會繼續(xù)下載和安裝包。因為npm會把所有的日志輸出到終端择同,有關(guān)錯誤包的錯誤信息就會在一大堆npm打印的警告中丟失掉两入,并且你甚至永遠不會注意到實際發(fā)生的錯誤。
Yarn的優(yōu)勢
速度快 敲才。速度快主要來自以下兩個方面:
并行安裝:無論 npm 還是 Yarn 在執(zhí)行包的安裝時裹纳,都會執(zhí)行一系列任務(wù)。npm 是按照隊列執(zhí)行每個 package紧武,也就是說必須要等到當(dāng)前 package 安裝完成之后剃氧,才能繼續(xù)后面的安裝。而 Yarn 是同步執(zhí)行所有任務(wù)阻星,提高了性能朋鞍。
離線模式:如果之前已經(jīng)安裝過一個軟件包,用Yarn再次安裝時之間從緩存中獲取妥箕,就不用像npm那樣再從網(wǎng)絡(luò)下載了滥酥。
安裝版本統(tǒng)一:為了防止拉取到不同的版本,Yarn 有一個鎖定文件 (lock file) 記錄了被確切安裝上的模塊的版本號畦幢。每次只要新增了一個模塊坎吻,Yarn 就會創(chuàng)建(或更新)yarn.lock 這個文件。這么做就保證了宇葱,每一次拉取同一個項目依賴時瘦真,使用的都是一樣的模塊版本。npm 其實也有辦法實現(xiàn)處處使用相同版本的 packages贝搁,但需要開發(fā)者執(zhí)行 npm shrinkwrap 命令吗氏。這個命令將會生成一個鎖定文件,在執(zhí)行 npm install 的時候雷逆,該鎖定文件會先被讀取弦讽,和 Yarn 讀取 yarn.lock 文件一個道理。npm 和 Yarn 兩者的不同之處在于膀哲,Yarn 默認(rèn)會生成這樣的鎖定文件往产,而 npm 要通過 shrinkwrap 命令生成 npm-shrinkwrap.json 文件,只有當(dāng)這個文件存在的時候某宪,packages 版本信息才會被記錄和更新仿村。
更簡潔的輸出:npm 的輸出信息比較冗長。在執(zhí)行 npm install <package> 的時候兴喂,命令行里會不斷地打印出所有被安裝上的依賴蔼囊。相比之下焚志,Yarn 簡潔太多:默認(rèn)情況下,結(jié)合了 emoji直觀且直接地打印出必要的信息畏鼓,也提供了一些命令供開發(fā)者查詢額外的安裝信息酱酬。
多注冊來源處理:所有的依賴包,不管他被不同的庫間接關(guān)聯(lián)引用多少次云矫,安裝這個包時膳沽,只會從一個注冊來源去裝,要么是 npm 要么是 bower, 防止出現(xiàn)混亂不一致让禀。
更好的語義化: yarn改變了一些npm命令的名稱挑社,比如 yarn add/remove,感覺上比 npm 原本的 install/uninstall 要更清晰巡揍。
yarn和npm的主要區(qū)別介紹:
\1. yarn雖然和nom一樣是本地緩存痛阻,但是yarn無需互聯(lián)網(wǎng)鏈接就能安裝本地緩存的依賴項,提供了離線模式腮敌,而這個是npm實現(xiàn)不了的录平。
\2. yarn解決了由于語義版本控制而導(dǎo)致的npm的不確定性問題,通過安裝時創(chuàng)建的默認(rèn)文件缀皱,確保使用的庫的版本相同。
\3. yarn增加了一些能讓開發(fā)人員并行化處理所有必需的操作动猬,且通過添加了一些改進啤斗,使得運行速度有了顯著的提升,整個安裝時間也變得更少赁咙。
\4. npm的輸出信息比較冗長钮莲,相比之下,yarn簡潔很多彼水。默認(rèn)情況下崔拥,直觀且直接地打印出必要的信息。
\5. yarn的語義相對于npm更加清晰凤覆,主要是因為yarn改變了一些npm的命令名稱链瓦,看上去就更清晰了。
yarn 和 npm 命令對比
查看版本yarn --version
npm -version(或者 node -v)
安裝淘寶鏡像yarn config set registry 'https://registry.npm.taobao.org'
npm install -g cnpm --registry=http://registry.npm.taobao.org
初始化某個項目yarn init
npm init
默認(rèn)安裝項目依賴yarn install
cnpm install
安裝依賴盯桦,并且默認(rèn)保存到 packageyarn add xxx
cnpm install xxx --save
卸載依賴yarn remove xxx
cnpm uninstall xxx --save
更新依賴yarn upgrade xxx
cnpm update xxx --save
安裝全局項目依賴yarn global add xxx
cnpm install xxx -g
安裝特定版本號的項目依賴yarn add xxx@
cnpm install xxx@1.2.33 --save
發(fā)布/登錄/登出慈俯,一系列NPM Registry操作yarn publish/login/logout npm publish/login/logout
運行命令yarn run/test
npm run/test
參考鏈接:http://www.reibang.com/p/254794d5e741https://xcx.topsage.com/8986.html