作者:京東科技 于振京
受眾簡介
- 前端研發工程師
還在為
npm i安裝大量依賴等待時間較長,npm扁平化node_modules依賴版本沖突在苦惱嗎,不用苦惱pnpm為你保駕護航
-
主要影響:安裝依賴包的程序,假如使用的是npm install會根據package-lock.json進行軟體包的安裝,如果沒有package-lock.json會根據package.json進行生成并對安裝的依賴包扁平化處理,安裝依賴包的時長由兩個因素導致:
1.package.json依賴包的量
2.網速 -
運維工程師
前端服務器由于部署工程較多,依賴包占用磁盤空間太大,不夠用怎么辦,還在花錢申請擴容嗎,使用
pnpm解決你的問題
主要影響:構建前端工程時jenkin任務一般會清除服務器的node_modules然后重新安裝依賴,避免構建最新分支代碼缺少依賴,另外一臺服務器可能會部署很多前端工程,這樣就會存在不同工程中安裝了相同的依賴浪費服務器磁盤空間
沒用pnpm時
我們使用以下幾種工具管理依賴包
-
npm:
nodejs自帶工具,萬物之主它的誕生給前端帶來了春天 -
npx:與
npm同根同源,區別在于npm將依賴安裝在本地,而npx避免了本地安裝,直接對依賴包尋址執行 -
nrm:
npm的鏡像源管理工具,使用它可以快速切換npm源 -
cnpm:淘寶鏡像包管理工具
-
yarn:facebook推出的包管理工具,曾風靡一時
由于本章的主角是pnpm以上工具不做詳細介紹,但以上包管理工具都有以下幾個問題
安裝包耗時較長,雖yarn做了下載優化和快取,但與pnpm相比還是略遜一些
占用存盤空間較大,當開發機或服務器前端工程較多時,工程越多冗余包就會越多
扁平化處理,npm v3之后引入了扁平化機制,解決地域依賴問題,但又帶來了以下幾個問題
-- 依賴結構的不確定性
-- 扁平化演算法本身復雜性很高,耗時較長
-- 專案中仍然可以非法訪問沒有宣告過依賴的包 (幽靈依賴)
用了pnpm后
我們會得到以下幾個buff加持
-
快速:官網解釋:比其他包管理模塊快2倍
-
高效:通過軟硬鏈接尋址存盤庫,已達到節省磁盤的目的
-
嚴格:
pnpm默認創建了一個非平鋪的node_modules,因此避免了相同插件不同版本參考不對稱的問題,此設計完美解決了地域依賴和幽靈依賴
認識軟硬鏈接
對于pnpm為什么能達到【快速】和【高效】,就需要認識下軟鏈接和硬鏈接了
- 硬鏈接
電腦檔案系統中的多個檔案共享一個檔案存盤單元
window: mklink /H aaa_hard.js aaa.js
macos: ln aaa.js aaa_hard.js
- 軟鏈接
以絕對或者相對路徑的形式指向其他檔案目錄的參考
window: mklink aaa_soft.js aaa.js
macos: ln -s aaa.js aaa_soft.js
在執行pnpm install或pnpm add <pkg>命令時,PNPM會自動使用硬鏈接、軟鏈接的方式管理依賴包
npm與pnpm命令對比
pnpm官網:https://pnpm.io/zh/

收益

上圖是同一個工程使用npm和pnpm所需時間比較,npm耗時
179.612秒而pnpm只需要27.3秒
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/549448.html
標籤:JavaScript
下一篇:TS 匯入匯出那些事
