這個月 Node.js 釋出 8.0 版本,搭配的就是 npm v5.0.0 版本,上一篇寫到如何透過 Yarn 指令移除 devDependencies 內的 Package 套件,減少 node_modules 大小,有網友提到那 npm 5 的速度為何?其實筆者已經好久沒有用 npm 了,但是有人提問,我就立馬來測試看看 npm vs yarn 的速度,詳細數據可以參考此專案說明。測試方法如下
設定環境
底下是測試環境版本- node version:
v8.0.0
- npm verison:
5.0.0
- yarn verison:
0.24.6
初次安裝 (沒有任何快取)
先把 node_modules 刪除,及系統相關 Cache 目錄都移除$ npm cache verify $ rm -rf ~/.npm/_cacache/ $ time npm installnpm 花費時間: 1m43.370s
$ yarn cache clean $ time yarn installyarn 花費時間: 1m1.707s
保留系統快取目錄
執行完第一次安裝後,我們把 node_modules 移除後再安裝一次試試看$ rm -rf node_moduels $ time npm installnpm 花費時間: 0m38.819s
$ rm -rf node_moduels $ time yarn installyarn 花費時間: 0m24.219s
保留系統快取目錄及 node_modules
最後保留 node_modules 目錄,再執行一次安裝$ time npm installnpm 花費時間: 0m11.216s
$ time yarn installyarn 花費時間: 0m0.954s
結論
大家可以發現,雖然 npm 改進不少速度,但是 Yarn 還是優勝許多,這邊可以總結,已經在使用 yarn 的,可以繼續使用,尚未使用 yarn 的開發者,可以嘗試使用看看。另外 npm 5 現在執行 npm install –save 會預設產生出package-lock.json
跟 yarn 產生的 yarn.lock
是類似的東西,除非專案內已經有 npm-shrinkwrap.json
,否則 npm 會自動幫專案產生喔。詳細情形可以看 Replace metadata + fetch + cache code。npm cache 指令可以看此文件。