关于 pnpm
用于 pnpm 的技能,面向 JavaScript 项目包管理。内容涵盖命令、配置、工作区、依赖管理、安全、任务编排和发布流程,适用于 pnpm v11 与 v12。
主要功能
- 01包与工作区命令
- 02集中管理版本与依赖覆盖
- 03补丁、钩子和同级依赖控制
- 04供应链安全设置
- 05工作区任务与发布管理
适用场景
- 01管理 pnpm 项目依赖
- 02配置 JavaScript 单体仓库
- 03设置 CI 安装与发布流程
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ antfu/ skills --skill pnpm安装后在 Claude Code 中输入/pnpm确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
GENERATION.mdreferences/best-practices-ci.mdbest-practices-migration.mdbest-practices-performance.mdcore-cli.mdcore-config.mdcore-store.mdcore-workspaces.mdfeatures-aliases.mdfeatures-catalogs.mdfeatures-config-dependencies.mdfeatures-global-virtual-store.mdfeatures-hooks.mdfeatures-multi-ecosystem.mdfeatures-overrides.mdfeatures-patches.mdfeatures-peer-deps.mdfeatures-supply-chain-security.mdfeatures-task-orchestration.mdfeatures-versioning.md详细介绍
pnpm 是一款快速且节省磁盘空间的包管理器。它使用内容寻址存储,在一台机器上的所有项目间去重包,并默认强制严格解析依赖,防止出现幻影依赖。
pnpm v12 是 v11 的 Rust 重写版本:已稳定,并保留了 v11 的命令、标志、设置和锁文件格式,因此这里的大多数指南适用于两者。v12 有少数行为差异(Git 依赖通过 HTTPS 解析、全局二进制文件感知项目、支持其他包管理器、Linux 上 packageImportMethod: auto 优先使用硬链接、移除了 --resolution-only)——请参阅 best-practices-migration。
配置模型(重要): pnpm 设置位于 pnpm-workspace.yaml(以及全局 config.yaml)中,使用 camelCase 键。.npmrc 仅用于身份验证/注册表凭据,且不再读取 package.json 的 pnpm 字段。在 pnpm 项目中操作时,请检查 pnpm-workspace.yaml 中的设置/工作区结构,并仅在 .npmrc 中查看身份验证配置。在 CI 中始终使用 --frozen-lockfile(或 pnpm ci)。
此技能基于 pnpm 12.x,生成于 2026-09-25。在当前文档有所说明的范围内,涵盖 v11 和 v12 的行为(配置拆分、隔离的全局包、
allowBuilds、pmOnFail、全局虚拟存储、原生版本管理、工作区任务编排,以及实验性的 Python/Cargo 支持)。
核心
| 主题 | 描述 | 参考 |
|---|---|---|
| CLI 命令 | install/add/remove/update、run、dlx/pnx、workspace、runtime、发布(version、view、sbom、stage) | core-cli |
| 配置 | pnpm-workspace.yaml 设置(camelCase)、全局 config.yaml、packageConfigs、.npmrc 身份验证 | core-config |
| 工作区 | Monorepo 支持:筛选、工作区协议、共享锁文件、packageConfigs | core-workspaces |
| 存储 | 内容寻址存储、虚拟存储、node 链接器模式、冻结/只读存储 | core-store |
功能
| 主题 | 描述 | 参考 |
|---|---|---|
| 目录 | 集中管理依赖版本;catalogMode、overrides 中的 catalog: | features-catalogs |
| 覆盖项 | 强制指定版本(包括传递依赖和 peer 依赖);packageExtensions | features-overrides |
| 补丁 | 修改第三方包;pnpm-workspace.yaml 中的 patchedDependencies | features-patches |
| 别名 | 使用自定义名称(npm:)安装,以及注册表别名(namedRegistries) | features-aliases |
| 钩子 | .pnpmfile.mjs 钩子(readPackage、updateConfig、beforePacking)、查找器、解析器/获取器 | features-hooks |
| Peer 依赖 | 自动安装、严格模式、规则、dedupePeers、peer 检查 | features-peer-deps |
| 配置依赖 | 通过 configDependencies 在多个仓库间共享钩子/设置/目录/补丁 | features-config-dependencies |
| 全局虚拟存储与 Shims | 共享 node_modules、git-worktree 多 Agent 设置、隔离的全局包、项目感知型二进制文件、其他包管理器 | features-global-virtual-store |
| 供应链安全 | 构建审批(allowBuilds)、minimumReleaseAge、trustPolicy、锁文件完整性 | features-supply-chain-security |
| 任务编排 | 跨项目任务图(tasks/dependsOn)、并发组、优先级、pnpm pipeline | features-task-orchestration |
| 发布管理 | 原生版本管理:pnpm change/version -r/lane、发布通道、史诗、固定组 | features-versioning |
| 多生态系统 | 与 npm 依赖并存的 Python(pypi:)和 Cargo(crate:)依赖(实验性) | features-multi-ecosystem |
最佳实践
| 主题 | 描述 | 参考 |
|---|---|---|
| CI/CD 设置 | GitHub Actions、GitLab、Docker、pnpm ci、存储缓存、冻结锁文件 | best-practices-ci |
| 迁移 | npm/Yarn → pnpm、幽灵依赖,以及 pnpm v10 → v11 → v12 升级说明 | best-practices-migration |
| 性能 | 安装优化、allowBuilds、全局虚拟存储、工作区并行化 | best-practices-performance |