NPM 每次在安裝的時候,都會安裝很久很久,就算是好幾個類似的專案,每次在執行 npm install
時都需要花費大量的時間,而且在網路不穩定的環境下還可能造成中斷。Yarn 可以讓這些問題好轉些,在實測時,安裝一次以上的套件時間將只需要原本的 20% 時間(甚至更短),將大幅減少逛 FB 的機會。
安裝 Yarn
Mac 用戶需要先安裝 Homebrew,安裝方法可以參考 http://brew.sh/,這邊我也順便更新了 homebrew ,目前版本如下。
接下來再安裝的時候跳出一個錯誤 (brew install yarn
)
這貌似新版的 OS Sierra 的問題,有兩個方法,一種是更新 Xcode,另一種是刪除 Xcode
原本是想採用更新 Xcode 的方式,但是 Xcode 壞了打不開(-.-),另外就是下載的大小佔 4.4 G…,無奈的情況下,只好把 Xcode 丟進垃圾桶了。
好了,在下一次 brew install yarn
,將會開使正長的安裝 Yarn (我以為 Xcode 是必備的勒…)。
下載完後檢查版本 yarn --version
。
0.15.1
使用 Yarn
這邊使用兩個專案來測試,測試 安裝時間 以及所需的 磁碟空間。
專案一
在當下的資料夾中,我先把原始的 node_modules
(28.1 mb)移除,以下是 package.json
的部分內容。
"devDependencies": {
"autoprefixer": "^6.5.1",
"gulp": "^3.9.1",
"gulp-autoprefixer": "^3.1.1",
"gulp-concat": "^2.6.0",
"gulp-postcss": "^6.2.0",
"gulp-sass": "^2.3.2",
"gulp-uglify": "^2.0.0"
}
npm install 版本所佔的磁碟空間大小
輸入 yarn install
就會開始安裝,安裝時會先檢查本地端有沒有,如果沒有才會線上拉。
第一次安裝 37.03秒,第二次安裝 6.9秒。
yarn install 版本所佔的磁碟空間大小
專案二
好像是一個 express 範例…,在插入一些 gulp 教學。
"dependencies": {
"express": "~4.10.6",
"body-parser": "~1.10.1",
"cookie-parser": "~1.3.3",
"morgan": "~1.5.1",
"serve-favicon": "~2.2.0",
"debug": "~2.1.1",
"jade": "~1.8.2"
},
"devDependencies": {
"gulp-gh-pages": "^0.5.4",
"gulp-webserver": "^0.9.1",
"gulp": "^3.9.1",
"gulp-concat": "^2.6.0",
"gulp-sass": "^2.3.2",
"gulp-uglify": "^2.0.0"
}
使用 npm install
安裝時,所佔的磁碟空間為 38mb。
用 yarn
所佔的磁碟空間為 26.7mb,且第一次安裝時間約 27 秒,第二次 約 8 秒。
加速安裝的秘密,就在於根目錄下的 .yarn-cache
資料夾,這個資料夾會將每次安裝的套件先安裝一份到這來,往後如果需要相同套件,就會從這邊拉。
NPM 與 Yarn 指令比較
大多數的指令用法和原本並無差異,只要將 npm 換成 yarn 即可,特別要注意的是 npm install [package]
安裝少數套件在 yarn 是不支援的,yarn 的套件都是必須儲存 (--save
)。
NPM | Yarn | 說明 |
---|---|---|
npm install | yarn install | - |
npm install [package] | X | 不支援直接安裝套件 |
npm install --save [package] | yarn add [paakage] | 僅是將 --save 改成 add |
npm install --save-dev [package] | yarn add [paakage] --dev | |
npm install --global [package] | yarn global add [package] | 這段還沒測過 global 的差異 |
npm uninstall [package] | x | |
npm uninstall --save [package] | yarn remove [package] | |
rm -rf node_modules && npm install | yarn upgrade | 移除再安裝 變 直接升級套件 |
更多的語法:https://yarnpkg.com/en/docs/migrating-from-npm
目前 Yarn 個人還沒完全測試過,但就一開始的體驗確實不錯,入門也不太需要太多改變 (除了砍掉了 Xcode 而已!?),算是一個值得入手的好工具。
開發團隊包含了 Facebook、Google 等,而且相容目前的 NPM 註冊表,有興趣的可以放心使用 http://www.ithome.com.tw/news/108974。