npm 加速之 yarn cnpm pnpm
有沒有感覺到使用 npm 的時候很慢? 安裝速度 幾Kb/s
不說, 還裝着裝着出錯了, 奇奇怪怪的問題.
這種情況大多數還是因為網絡的原因, 很多時候雖然 沒有直接提示超時
, 但還是可能由於網絡原因導致的不能正常提示, 比如斷斷續續的下載導致安裝腳本不完整.
告別龜速一般有幾種途徑:
使用國內鏡像 - 網速優化
所謂國內鏡像, 簡單來說就是把國外的資源復制一份到國內, 下載的時候從國內下載.
比較常用的的淘寶鏡像, 可能用如下命令配置 npm 的鏡像:npm config set registry=https://registry.npm.taobao.org
之后安裝工具就會明顯快得很多.
如果需要管理多個鏡像地址, 可以使用 nrm
。
$ nrm ls # 查看所有鏡像源, 帶 * 號的是正在使用的
* npm ---- https://registry.npmjs.org/
cnpm --- http://r.cnpmjs.org/
nj ----- https://registry.nodejitsu.com/
npmMirror https://skimdb.npmjs.com/registry/
edunpm - http://registry.enpmjs.org/
$ nrm add taobao https://registry.npm.taobao.org/ # 添加鏡像源
$ nrm use taobao # 切換鏡像源為淘寶
$ nrm test taobao # 查看淘寶鏡像的連接速度
使用緩存, 多線程, 鎖… - 本地優化
一開始 npm 的依賴管理方式以及安裝方式受到不少人的不滿, 比如:
深層嵌套, 這會在一些對目錄長度有限制的系統上出現問題.
不確定性, 安裝時默認會升級小版本, 但很多軟件小版本升級也不兼容, 導致重新安裝時程序出錯.
一些大廠或大牛視圖解決類似問題, 開發了其他的管理器, 如 yarn cnpm pnpm ...
, 但常用的就 yarn cnpm .
yarn 主要有以下特性:
- 離線模式, 如果您以前安裝過軟件包,則可以在沒有Internet連接的情況下再次安裝它。
- 確定性的, 無論安裝順序如何,都將以完全相同的方式在所有計算機上安裝相同的依賴項。
- 網絡性能, 可以有效地對請求進行排隊,並避免請求瀑布,以最大程度地利用網絡。
- 網絡彈性, 失敗的單個請求不會導致整個安裝失敗。失敗時將自動重試請求。
- 平面模式, 將不匹配的依賴項版本解析為單個版本,以避免創建重復項。
yarn 與 npm 的使用命令有一些不同:
npm | yarn |
---|---|
npm i | yarn |
npm i react -S | yarn add react |
npm un react -S | yarn remove react |
npm i react -D | yarn add react -D |
npm update -S | yarn upgrade |
cnpm 主要有以下特性:
- 自帶淘寶鏡像
- 簡化安裝信息
- 與 npm 一致的命令
注意
yarn:
- 使用方式不同, 別搞錯
- 由於使用多線程, 在內存小的計算機上安裝時, 安裝途中會被 kill 掉
npm:
- 由於第三方的壓力, npm 也進行了很多改進
- 發布自己的工具時, 建議使用 npm
擴展閱讀
yarn: https://github.com/yarnpkg/yarn
cnpm: https://github.com/cnpm/cnpm
pnpm: https://github.com/pnpm/pnpm
文章來源
注: 本文來源於微信公眾號 【樂玩nodejs npm工具庫】。