如何在 ServBay 中啟用與使用 pnpm
pnpm
是一個現代且高效的 Node.js 套件管理工具,旨在解決傳統套件管理器(如 npm
及 yarn
)在處理依賴時所遇到的種種痛點。藉由採取內容可尋址的檔案系統及硬連結、符號連結等技術,pnpm
大幅減少磁碟空間的佔用,並顯著提升安裝速度。對於使用 ServBay 進行 Node.js 開發的開發者而言,善用 pnpm
能有效優化專案依賴的管理效率。
ServBay 內建的 Node.js 軟體包已整合了 corepack
,這是 Node.js 官方的實驗性工具,專為管理並協助專案導入指定版本的套件管理器(如 npm
、yarn
、pnpm
)而設。一般情況下,安裝 ServBay 的 Node.js 後,您可以透過 corepack
指令啟用 pnpm
。
啟用 pnpm
如果您發現終端機尚無法直接使用 pnpm
指令,通常是因為尚未透過 corepack
啟用。請依照下列步驟操作:
開啟終端機應用程式。
輸入下列指令,透過
corepack
啟用pnpm
:bashcorepack enable pnpm
1若指令執行成功,通常不會有任何回應訊息。這代表
corepack
已將pnpm
指令連結至您的系統中。確認
pnpm
已成功啟用,並檢查其版本:bashpnpm -v
1執行後應顯示目前的
pnpm
版本,例如:bash9.1.0
1如果終端機顯示出版本號,即表示
pnpm
已準備就緒並可開始使用。
corepack
下載提示
使用 pnpm
指令時,若出現類似下述提示,表示 corepack
正在為您下載或更新指定版本的 pnpm
。這是 corepack
的正常運作機制,目的是確保您所用的為專案要求或最新的 pnpm
版本。
$ pnpm -v
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-9.0.6.tgz
? Do you want to continue? [Y/n]
2
3
輸入 Y
並按下 Enter,以允許 corepack
下載檔案並繼續執行 pnpm
指令。下載完成後,指令會正常執行並顯示版本號(或者您輸入的其他 pnpm
結果)。
pnpm 的核心優勢與使用範例
pnpm
的設計理念是高效管理依賴。它將所有套件集中存放於全域、內容可尋址的儲存區,每款套件版本僅儲存一次。當專案需要某個依賴時,pnpm
會透過硬連結自全域儲存建立連結,專案的 node_modules
資料夾則利用符號連結組成扁平結構。與 npm
存在的幽靈依賴問題不同,pnpm
嚴格控管專案可存取的模組,僅允許直接依賴的套件被引用。
這種設計帶來幾項顯著優勢:
- 節省磁碟空間: 不同專案共用相同版本的依賴,避免重複儲存。
- 安裝速度快: 多數情況下,依賴已存在全域儲存,只需建立連結,速度遠快於複製或下載。
- 嚴謹依賴結構: 防止幽靈依賴問題,使專案的依賴關係更加清晰、可控。
以下為在 ServBay 環境中使用 pnpm
的常見指令範例:
假設您的專案位於 ServBay 網站根目錄下的某個子目錄,例如 /Applications/ServBay/www/my-servbay-app
。
安裝專案依賴
進入專案目錄後,使用 pnpm install
安裝 package.json
中列出的所有依賴:
cd /Applications/ServBay/www/my-servbay-app
pnpm install
2
pnpm
會檢查全域儲存區,下載缺少的套件,並於專案的 node_modules
中建立連結。
新增依賴套件
若想為專案新增一個依賴,例如 lodash
:
pnpm add lodash
這會下載 lodash
(若全域儲存尚未存有),建立連結,並自動更新專案的 package.json
及 pnpm-lock.yaml
檔案。
移除依賴套件
移除不再需要的依賴,例如 lodash
:
pnpm remove lodash
這會將 lodash
從專案依賴中刪除,並更新 package.json
與 pnpm-lock.yaml
。
執行腳本
pnpm
也可用於執行 package.json
的 scripts
欄位中定義的腳本:
pnpm run dev
# 或者可簡寫為
pnpm dev
2
3
執行套件指令(pnpx)
類似於 npx
,pnpm
提供 pnpx
(或直接使用 pnpm exec
),讓您無須全域安裝,即可執行安裝於專案本地 node_modules/.bin
資料夾中的指令:
pnpm exec webpack --version
# 或簡寫為
pnpx webpack --version
2
3
總結
只需一行 corepack enable pnpm
指令,您即可輕鬆於 ServBay 的 Node.js 環境中啟用 pnpm
。憑藉 pnpm
高效的依賴管理能力,您將大幅提升 Node.js 專案的依賴安裝速度與開發效率,同時有效節省磁碟空間。對於追求極致開發體驗的 ServBay 用戶而言,pnpm
絕對是值得推薦的得力工具。