版本管理设置
自 v11.13.0 起提供
这些配置项用于设置 pnpm 原生的工作区发布管理,由 pnpm change 和基础的 pnpm version -r 驱动。有关它们所属的工作流,参见发布管理。
当两个工作区项目发布相同的名称时,在 versioning.fixed、versioning.ignore 以及 versioning.lanes 的键中,可以用带 ./ 前缀的工作区相对目录来引用某个项目,而不用它的名称。
versioning.fixed
- 默认值:[]
- 类型:string[][]
始终以单一共享版本一起发布的包分组。该共享版本是组内当前最高的版本,并按任一成员所需的最大升级幅度进行提升。
pnpm-workspace.yaml
versioning:
fixed:
- ['@example/cli', '@example/napi']
一个固定组必须一起在通道之间移动,并且必须完全位于某个 epic 之内或完全之外。
versioning.ignore
- 默认值:[]
- 类型:string[]
永久从版本管理和依赖传播中排除的包。若某个变更意图为一个被忽略的包请求实际版本提升,则会失败。
pnpm-workspace.yaml
versioning:
ignore:
- '@example/internal'
versioning.maxBump
- 默认值:undefined(无上限)
- 类型:'patch'、'minor'、'major'
限定从当前检出的代码进行发布时可应用的最大升级幅度。它在依赖传播和固定组解析之后,对最终组装的发布计划强制执行,因此一个仅 patch 的维护分支不会意外发布一个 minor。
pnpm-workspace.yaml
versioning:
maxBump: patch
versioning.lanes
- 默认值:****
- 类型:Record<string, string>
将包映射到其所在的发布通道。通道是一条并行的发布轨道,会发出 X.Y.Z-<lane>.N 预发布版本;每个未列出的包都位于保留的默认通道 main 上,并发布稳定版本。
pnpm-workspace.yaml
versioning:
lanes:
'@example/cli': alpha
通道名称只能包含字母数字和连字符,且不能为纯数字。main 是保留字,不能被指定——改为移除该条目,或使用 pnpm lane main --filter
versioning.epics
- 默认值:[]
- 类型:Array<{ lead: string, packages: string[] }>
将一组成员包绑定到一个 lead 包,把每个成员的主版本约束在由 lead 主版本推导出的区间内:当 lead 处于主版本 M 时,成员位于 M*100 … M*100+99。
pnpm-workspace.yaml
versioning:
epics:
- lead: '@example/app'
packages:
- './packages/**'
- '!./packages/private-*'
lead 是包名或带 ./ 前缀的工作区目录。packages 通过 pnpm 的包选择器进行匹配——名称 glob、带 ./ 前缀的目录 glob 以及带 ! 前缀的取反——按顺序求值,最后匹配者胜出。一个包最多只能属于一个 epic。
关于该区间如何被强制执行和重新基准化,参见Epics。
versioning.changelog.storage
- 默认值:'registry'
- 类型:'registry'、'repository'
发布变更日志所在的位置。
使用 registry 时,不会提交 CHANGELOG.md:每个发布的章节在发布时组合,并叠加在此前已发布版本的变更日志之上,打包进发布的 tarball。
使用 repository 时,会在每个包中提交 CHANGELOG.md。
pnpm-workspace.yaml
versioning:
changelog:
storage: repository本页内容译自pnpm 官方文档(MIT License),如有出入以英文原文为准。