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