[Node.js] 用一行指令加速 NPM install

原文網址: 用一行指令加速 npm install

Npm-logo.svg

不久之前寫過一篇 提升 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 跟測試非常有感覺。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 7
Summer

增加缓存无疑是最快的,npm install 每一次都很头

7年前 评论
appleboy

@Summer 我嘗試過用 npm cache server 但是似乎還是會遇到讀取失敗,npm 沒有像 composer cache 機制 .. 真的很令開發者困擾

另外還有一個問題就是在跑 npm test 測試時,花在 npm install 就吃掉大部分主機資源,所以才用此方法降低 CPU 使用率。

7年前 评论
appleboy

@YuxiangDong 一樣問題啊,我在 China 用 cnpm,全球用 npm,但是無法解決我上面講的問題。

7年前 评论

@appleboy 我这有个问题现在没解决,phpstorm安装node_modules后IDE就卡死打不开了,你有遇到了吗

7年前 评论
appleboy

@YuxiangDong 我沒使用過 phpstorm,這方面我就沒經驗了,但是根據我朋友用 phpstorm 沒有遇過你這問題

難道把 node_modules 砍掉之後,就可以打開 IDE 了?

7年前 评论

@appleboy 目前遇到的情况是这样的,有的项目有这个就会打不开,有的就没问题,还没排查到什么原因导致

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!