[Node.js] 用一行指令加速 NPM install
原文網址: 用一行指令加速 npm install
不久之前寫過一篇 提升 npm install 安裝速度,但是發現速度還是沒有變快,在 DevOps 的流程花在 npm install 的時間非常冗長,造成每次測試或 Deploy 都要花大量時間等待,且吃掉很多機器的資源,本篇要提供一個小技巧改善 npm install 安裝時間,其實簡單來說就是 cache 第一次安裝好的 node_modules 目錄,之後每次安裝就拿 cache 目錄來新增或減少 packages 即可。
一行指令
底下一行指令請加入測試流程內,讓 CI Server 專注在測試
$ tar xf ../nm_cache.tar && \
npm prune && \
npm install && \
tar cf ../nm_cache.tar node_modules
步驟很簡單,先拿上一次備份的 node_modules,再透過 npm prune 移除不必要的 package,再透過 npm install 安裝新的 package,最後一樣打包給下一次測試使用。這指令非常好用,不管你是不是用 npm@3 都很需要這指令加速 npm install。底下是我隨意拿一個 open source 專案來測試,先假設沒有 cache 機制。
$ rm -rf ~/.npm && rm -rf node_modules && time npm install
real 2m7.751s
user 1m8.704s
sys 0m19.272s
如果導入 cache 機制
$ time (tar xf ../nm_cache.tar && npm prune && rm -rf ~/.npm && npm install && tar cf ../nm_cache.tar node_modules)
> labs-web@0.0.1 postinstall /Users/mtk10671/git/labs-web
> node node_modules/fbjs-scripts/node/check-dev-engines.js package.json
real 0m32.370s
user 0m19.884s
sys 0m13.582s
從 2 分 7 秒變成 32 秒,大約提升了 4 倍,大家可以嘗試看看,這招在 Deploy 跟測試非常有感覺。

关于 LearnKu
增加缓存无疑是最快的,npm install 每一次都很头
@Summer 我嘗試過用 npm cache server 但是似乎還是會遇到讀取失敗,npm 沒有像 composer cache 機制 .. 真的很令開發者困擾
另外還有一個問題就是在跑 npm test 測試時,花在 npm install 就吃掉大部分主機資源,所以才用此方法降低 CPU 使用率。
用cnpm不就好了吗
@YuxiangDong 一樣問題啊,我在 China 用 cnpm,全球用 npm,但是無法解決我上面講的問題。
@appleboy 我这有个问题现在没解决,phpstorm安装node_modules后IDE就卡死打不开了,你有遇到了吗
@YuxiangDong 我沒使用過 phpstorm,這方面我就沒經驗了,但是根據我朋友用 phpstorm 沒有遇過你這問題
難道把 node_modules 砍掉之後,就可以打開 IDE 了?
@appleboy 目前遇到的情况是这样的,有的项目有这个就会打不开,有的就没问题,还没排查到什么原因导致