SKILL.md
readonlyread-only
name
pnpm
description
Node.js 套件管理器,具有嚴格的相依性解析。在執行 pnpm 特定指令、透過 pnpm-workspace.yaml 設定工作區,或使用目錄、修補程式、覆寫、設定相依性及全域虛擬儲存庫管理相依性時使用。
pnpm 是一個快速、節省磁碟空間的套件管理器。它使用內容可定址儲存庫來跨機器上的所有專案重複資料刪除套件,並預設強制執行嚴格的相依性解析,防止幽靈相依性。
設定模型(重要): pnpm 設定現在位於 pnpm-workspace.yaml(以及全域的 config.yaml)中,使用 camelCase 鍵。.npmrc 僅用於驗證/註冊表憑證,package.json 中的 pnpm 欄位不再被讀取。在 pnpm 專案中工作時,請檢查 pnpm-workspace.yaml 以了解設定/工作區結構,並僅檢查 .npmrc 以了解驗證資訊。在 CI 中始終使用 --frozen-lockfile(或 pnpm ci)。
此技能基於 pnpm 10.x,生成於 2026-06-22。它也涵蓋 v11 的行為變更(設定拆分、隔離的全域套件、
allowBuilds、pmOnFail、全域虛擬儲存庫),只要目前文件有描述。
核心
| 主題 | 說明 | 參考 |
|---|---|---|
| CLI 指令 | install/add/remove/update, run, dlx/pnx, workspace, runtime, publishing (version, view, sbom, stage) | core-cli |
| 設定 | pnpm-workspace.yaml 設定(camelCase)、全域 config.yaml、packageConfigs、.npmrc 驗證 | core-config |
| 工作區 | 單一儲存庫支援:過濾、工作區協定、共用鎖定檔、packageConfigs | core-workspaces |
| 儲存庫 | 內容可定址儲存庫、虛擬儲存庫、node linker 模式、凍結/唯讀儲存庫 | core-store |
功能
| 主題 | 說明 | 參考 |
|---|---|---|
| 目錄 | 集中式相依性版本;catalogMode、overrides 中的 catalog: | features-catalogs |
| 覆寫 | 強制版本(包括傳遞與同儕相依性);packageExtensions | features-overrides |
| 修補程式 | 修改第三方套件;pnpm-workspace.yaml 中的 patchedDependencies | features-patches |
| 別名 | 以自訂名稱安裝(npm:)和註冊表別名(namedRegistries) | features-aliases |
| 鉤子 | .pnpmfile.mjs 鉤子(readPackage、updateConfig、beforePacking)、finders、resolvers/fetchers | features-hooks |
| 同儕相依性 | 自動安裝、嚴格模式、規則、dedupePeers、peers 檢查 | features-peer-deps |
| 設定相依性 | 透過 configDependencies 跨儲存庫共用鉤子/設定/目錄/修補程式 | features-config-dependencies |
| 全域虛擬儲存庫 | 共用 node_modules、git-worktree 多代理設定、隔離的全域套件 | features-global-virtual-store |
| 供應鏈安全 | 建置核准(allowBuilds)、minimumReleaseAge、trustPolicy、鎖定檔完整性 | features-supply-chain-security |
最佳實踐
| 主題 | 說明 | 參考 |
|---|---|---|
| CI/CD 設定 | GitHub Actions、GitLab、Docker、pnpm ci、儲存庫快取、凍結鎖定檔 | best-practices-ci |
| 遷移 | npm/Yarn → pnpm、幽靈相依性、以及 pnpm v10 → v11 設定遷移 | best-practices-migration |
| 效能 | 安裝最佳化、allowBuilds、全域虛擬儲存庫、工作區平行化 | best-practices-performance |






