作為前端來說,包管理太重要了,今天就來介紹下新一代包管理工具pnpm吧。讓我們更快、更高效的完成包安裝。
傳統包管理工具
pnpm出現以前,我們先後經曆了npm、yarn、cnpm的轉變。直至今日,也要承認無論哪一種工具都是經典,都能繼續為我們的項目提供正常服務。但是,這其中也有一些問題,需要被我們所注意。
npm自身是串行安裝,也就造成了安裝效率會慢些,并且安裝包顯示和設計上并無特别優化。實作上,它使用了扁平化node_module的方式。這造成了不确定性、幽靈依賴、依賴分身等問題。
yarn在npm的基礎上,改為并行安裝。是以,安裝效率更快。并且安裝包的現實和設計上也比較友好。但是緩存機制上、扁平滑并沒有改進。
cnpm則是鏡像源上的差別,實際上仍然是npm。
是以,我們需要新一代的管理工具,去優化上述仍然的存在的問題。
pnpm的厚積薄發
pnpm在總結了前面三個工具的基礎上,提出了新的解決方案。使的節省磁盤空間、安裝速度更快、以及非扁平化node_module目錄。
- 節省磁暴空間:将pnpm安裝的依賴包被放在一個位置。這就防止了多個項目引用同一個依賴包,被多次安裝的情況。也正是這樣的設計,讓pnpm比npm、yarn在項目越多時,節省空間越大。
- 安裝速度更快:統一存放的另一個好處,就是安裝會更快。因為之前10個項目三個相同依賴,要安裝三次。而現在隻需要安裝一次。
- 非扁平化node_module:正是非扁平化使得不确定、幽靈依賴和依賴分身等問題得到完美解決。
pnpm的安裝
POSIX類系統中安裝
curl -fsSL https://get.pnpm.io/install.sh | sh -
Using Corepack
corepack enable
Homebrew 安裝
brew install pnpm
Scoop 安裝
scoop install nodejs-lts pnpm
npm install -g pnpm