Open rwu823 opened 7 years ago
大家都知道現在 Node 上最盛行的 Packages Manage 工具是 NPM,當裝好 Node 後,npm 就預裝好了,當你做任何有關 package 指令的時候都離不開它。
npm
在 npm v2 時代,安裝時會以一個 package 為單位,每個 package 即是一個 folder,這樣的問題就在於如果 A package 與 B package 同時依賴 C,這樣 C 就會同時被安裝兩份在 A 與 B folder 下,而造成 node_modules 的肥大與過度重覆模組。
A
B
C
node_modules
npm v3 試圖要解決這個問題,把所有安裝的包都扁平化在 node_modules 下了,如果依賴同樣版本的 package,就不會造成重覆安裝。解決了重覆性的問題之後,一切都很美好嗎?npm v3 最令人垢病的是安裝速度,因為安裝實在太久了,每次 npm install 一下,開發人員就只能去上廁所,這點真的是硬傷,嚴重影響開發效率,DevOps 在部署上也是幹聲連連。
npm install
先看一段 yarn 官網 上的標語:
FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT.
再來看看貢獻者大神們: https://github.com/yarnpkg
這陣容不紅有天理嗎?數據會說話,yarn 一推出立即衝上 GitHub Trend 榜第一,狠甩第二名好幾條街阿
當然光說不練是不行的,底下拿了我們的專案 OWL-UI 來實測, 可以看到 package.json 我們 Dependencies 不少,用 npm 安裝至少要 5 分鐘 以上。
初始安裝,無 yarn.lock(cache) 的情況下:
yarn.lock
$ rm -rf ./node_modules/ && rm -f ./yarn.lock && yarn install yarn install v0.15.1 info No lockfile found. [1/4] 🔍 Resolving packages... [2/4] 🚚 Fetching packages... [3/4] 🔗 Linking dependencies... [4/4] 📃 Building fresh packages... success Saved lockfile. ✨ Done in 39.58s.
在有 yarn.lock(cache) 的情況下,可再加快一倍:
$ rm -rf ./node_modules/ && yarn install yarn install v0.15.1 [1/4] 🔍 Resolving packages... [2/4] 🚚 Fetching packages... [3/4] 🔗 Linking dependencies... [4/4] 📃 Building fresh packages... success Saved lockfile. ✨ Done in 18.38s.
整整快了十倍以上,開始用 yarn 吧,解放開發效率,拯救部署,大家提早下班✨
yarn
新世代的包管理 yarn
NPM
大家都知道現在 Node 上最盛行的 Packages Manage 工具是 NPM,當裝好 Node 後,
npm
就預裝好了,當你做任何有關 package 指令的時候都離不開它。NPM 的不足
在 npm v2 時代,安裝時會以一個 package 為單位,每個 package 即是一個 folder,這樣的問題就在於如果
A
package 與B
package 同時依賴C
,這樣C
就會同時被安裝兩份在A
與B
folder 下,而造成node_modules
的肥大與過度重覆模組。npm v3 試圖要解決這個問題,把所有安裝的包都扁平化在
node_modules
下了,如果依賴同樣版本的 package,就不會造成重覆安裝。解決了重覆性的問題之後,一切都很美好嗎?npm v3 最令人垢病的是安裝速度,因為安裝實在太久了,每次npm install
一下,開發人員就只能去上廁所,這點真的是硬傷,嚴重影響開發效率,DevOps 在部署上也是幹聲連連。明日之(救)星 yarn
先看一段 yarn 官網 上的標語:
再來看看貢獻者大神們: https://github.com/yarnpkg
這陣容不紅有天理嗎?數據會說話,yarn 一推出立即衝上 GitHub Trend 榜第一,狠甩第二名好幾條街阿
yarn 實測
當然光說不練是不行的,底下拿了我們的專案 OWL-UI 來實測, 可以看到 package.json 我們 Dependencies 不少,用 npm 安裝至少要 5 分鐘 以上。
初始安裝,無
yarn.lock
(cache) 的情況下:在有
yarn.lock
(cache) 的情況下,可再加快一倍:整整快了十倍以上,開始用
yarn
吧,解放開發效率,拯救部署,大家提早下班✨