deno bump-version
deno bump-version 命令会更新你项目配置文件中的 version 字段,类似于 npm version。如果存在,它会读取并写入 deno.json(c) 中的 version 字段;否则会回退到 package.json。
deno bump-version 仍处于实验阶段,可能会发生变化。
用法 Jump to heading
deno bump-version [increment]
increment 参数用于选择版本提升方式:
| 增量 | 示例 |
|---|---|
patch |
1.4.6 → 1.4.7 |
minor |
1.4.6 → 1.5.0 |
major |
1.4.6 → 2.0.0 |
prepatch |
1.4.6 → 1.4.7-0 |
preminor |
1.4.6 → 1.5.0-0 |
premajor |
1.4.6 → 2.0.0-0 |
prerelease |
1.4.7-0 → 1.4.7-1 |
如果省略 increment,则会打印当前版本,并且配置文件保持不变。
如果配置文件中没有 version 字段且提供了增量,则版本默认从 0.1.0 开始。
如果当前目录中既找不到 deno.json 也找不到 package.json,该命令将以错误退出。
示例 Jump to heading
发布一个补丁版本:
deno bump-version patch
发布一个新的次版本:
deno bump-version minor
在预发布版本上继续迭代:
deno bump-version prerelease
打印当前版本而不修改文件:
deno bump-version
提升版本后,请将更新后的配置文件作为发布流程的一部分提交。要将提升后的版本发布到 JSR,请参阅
deno publish;要生成 npm tarball,请参阅
deno pack。
工作区模式 Jump to heading
当在 workspace 根目录运行时,
deno bump-version 会一次性作用于每个成员包,而不是只处理根配置:
- 相同的增量会应用到每个成员的
version字段。 - 工作区根配置以及任何 import map 中的
jsr:版本约束会原地重写,以便跨包引用继续匹配提升后的版本。 - 没有
version字段的成员会保持不变。
# 在工作区根目录:将每个成员从 1.4.6 提升到 1.4.7
deno bump-version patch
这样可以避免以前工作区发布时需要逐个更新每个成员的 deno.json/package.json 以及根导入映射的手动协调步骤。
从 Conventional Commits 推导版本提升 Jump to heading
在工作区中运行不带 increment 参数的 deno bump-version 时,
会切换为根据
Conventional Commits 在基准引用和当前分支之间推导每个包的版本提升。每个成员的提升都会独立根据触及其内部文件的提交计算(遵循作用域提交和通配符 *
作用域),并将提升后的版本写回成员配置以及任何导入映射约束。
推导规则如下:
fix:和其他补丁级别类型 →patch。feat:→minor。- 在正文中标记了
BREAKING CHANGE:,或在类型后带有!的提交 (例如feat!:)→major。 - 对于仍处于
0.x.y的包,SemVer 规则会更保守地应用:破坏性变更会产生minor提升而不是major,而feat:会产生patch。 - 预发布版本(
-0、-1,等等)会得到prerelease增量。 - 自基准引用以来对包版本所做的任何手动编辑都被视为权威结果并会被跳过——该工具不会覆盖刻意选择的版本。
# 根据 `main` 和当前分支之间的提交推导版本提升
deno bump-version --base=main
选择范围 Jump to heading
当默认范围(自最新标签以来的当前分支)不是你想要的时,两个标志可以固定比较范围:
--base=<ref>— 用作比较基准的引用。通常是发布分支或标签 (--base=main、--base=v1.4.7)。--start=<ref>— 更改集开始的位置引用。默认为--base和HEAD之间的合并基点。
# 基于 v1.4.7 与当前分支之间的提交进行提升
deno bump-version --base=v1.4.7
# 基于两个显式引用之间的提交进行提升
deno bump-version --base=v1.4.7 --start=release/1.5
--dry-run Jump to heading
传入 --dry-run 可打印计划中的更改——哪些包会提升、旧/新版本对,以及重写后的 jsr: 约束——而不向磁盘写入任何内容:
deno bump-version --base=main --dry-run
这非常适合用于 CI 检查(“这个分支会产生我们预期的提升吗?”),也适合在本地提交前预览发布结果。
deno bump-version [OPTIONS] [increment]Update version in the configuration file.
deno bump-version patch
# 1.4.6 -> 1.4.7
deno bump-version minor
# 1.4.6 -> 1.5.0
deno bump-version major
# 1.4.6 -> 2.0.0
deno bump-version prepatch
# 1.4.6 -> 1.4.7-0
deno bump-version preminor
# 1.4.6 -> 1.5.0-0
deno bump-version premajor
# 1.4.6 -> 2.0.0-0
deno bump-version prerelease
# 1.4.7-0 -> 1.4.7-1
When invoked at a workspace root, the same increment is applied to every
member package and jsr: references in the root import map are updated.
Without an increment, per-package bumps are derived from conventional
commit messages between the latest tag and the current branch and a
release note is prepended to Releases.md.
Options Jump to heading
--base<REF>[conventional-commits mode] Git ref to compare against. Default: current branch.
--dry-runPrint the planned changes without writing any files.
--import-map<PATH>Path to the import map to rewrite jsr: version constraints in. Defaults to the root deno.json (or its importMap target).
--no-workspaceDisable workspace mode and only bump the deno.json/package.json in the current directory.
--release-notes<PATH>[conventional-commits mode] Path to the release notes file to prepend. Default: Releases.md.
--start<REF>[conventional-commits mode] Git ref to start from. Default: latest tag (git describe --tags`` --abbrev=0).
--workspace, -wBump every package in the workspace (auto-detected at the workspace root).