Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

新世代的包管理 yarn #2

Open
rwu823 opened this issue Oct 12, 2016 · 0 comments
Open

新世代的包管理 yarn #2

rwu823 opened this issue Oct 12, 2016 · 0 comments
Labels

Comments

@rwu823
Copy link
Contributor

rwu823 commented Oct 12, 2016

新世代的包管理 yarn

NPM

大家都知道現在 Node 上最盛行的 Packages Manage 工具是 NPM,當裝好 Node 後,npm 就預裝好了,當你做任何有關 package 指令的時候都離不開它。

NPM 的不足

在 npm v2 時代,安裝時會以一個 package 為單位,每個 package 即是一個 folder,這樣的問題就在於如果 A package 與 B package 同時依賴 C,這樣 C 就會同時被安裝兩份在 AB folder 下,而造成 node_modules 的肥大與過度重覆模組。

npm v3 試圖要解決這個問題,把所有安裝的包都扁平化在 node_modules 下了,如果依賴同樣版本的 package,就不會造成重覆安裝。解決了重覆性的問題之後,一切都很美好嗎?npm v3 最令人垢病的是安裝速度,因為安裝實在太久了,每次 npm install 一下,開發人員就只能去上廁所,這點真的是硬傷,嚴重影響開發效率,DevOps 在部署上也是幹聲連連。

明日之(救)星 yarn

先看一段 yarn 官網 上的標語:

FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT.

再來看看貢獻者大神們:
https://github.com/yarnpkg
image

這陣容不紅有天理嗎?數據會說話,yarn 一推出立即衝上 GitHub Trend 榜第一,狠甩第二名好幾條街阿
image

yarn 實測

當然光說不練是不行的,底下拿了我們的專案 OWL-UI 來實測,
可以看到 package.json 我們 Dependencies 不少,用 npm 安裝至少要 5 分鐘 以上。

初始安裝,無 yarn.lock(cache) 的情況下:

$ 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 吧,解放開發效率,拯救部署,大家提早下班✨

@rwu823 rwu823 added the tools label Oct 12, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant