@bpmn-io/release

中文文档
0.8.0发布于 2026/10/28MITES Module近 30 天下载 4155

发布已更改的 npm monrepo - bpmn.io 样式包 .

中文使用文档
文档目录14 节
  1. 使用量
  2. 所需资源
  3. 战略
  4. 提交信件
  5. 国 际
  6. 版本命令
  7. 私人软件包
  8. 强制释放
  9. 构建步骤
  10. GitHub 发布草稿
  11. 释放前
  12. 程序化 API
  13. setVersion
  14. 许可证

@bpmn-io/释放

CI

发布已更改的 npm 单列集包 .

发现工作空间软件包 package.json#workspaces (块被扩大; 默认情况下包含私有软件包, 版本已加标签, 但从未 已出版,除非 --no-private 已经设定,命令他们 在地形学上, 检测自 最后的一次发布,要求每个软件包有一个版本的出错,然后应用每个出错 单项承诺并公布每个包的+标记,以对抗该项承诺.

使用量

通过 命令行 或作为 图书馆。 。 。 .

所需资源

战略

战略是 所需经费 从根部读取 package.json数字 :

{
  "releaseConfig": {
    "strategy": "independent" // or "fixed"
  }
}
  • independent ——每个软件包都是自行版本并发布;标签是 name@version。当工作空间依赖性释放时,依赖性会升级.
  • fixed —— 发布软件包共享一个版本, 检测到该版本 vX.Y.Z 发布标签, 并一起发布在一个新版本下 vX.Y.Z 标签。 只有软件包 基准(加上其级联的受扶养人)是 发布; 不变的软件包保留其当前版本并重新加入共享 下一次他们改变时.

提交信件

单次发行承诺默认为 chore(packages): release - 和 chore(packages): release %version 下划线 fixed 战略。 通过它覆盖 releaseConfig.commitMessage数字 :

{
  "releaseConfig": {
    "strategy": "fixed",
    "commitMessage": "chore(packages): release %version"
  }
}

这个 %version 占位符替换为 v- 前置发布版本 (例如:. v1.2.3,匹配 vX.Y.Z 因此上面的例子产量 chore(packages): release v1.2.3。因为只有一个共享版本 下划线 fixed 战略, %version 可能 没有 用于 independent。 。 。 .

国 际

# interactive
npx @bpmn-io/release

# non-interactive (CI)
npx @bpmn-io/release --bump minor --yes
npx @bpmn-io/release --bump @scope/a=patch --bump @scope/b=minor --yes

# --bump also takes an explicit version (same grammar as `version`)
npx @bpmn-io/release --bump @scope/a=1.2.3 --bump @scope/b=minor --yes

# non-interactive: cut 1.3.0-alpha.0 under dist-tag "next"
npx @bpmn-io/release --bump preminor --preid alpha --dist-tag next --yes

# exclude private packages from the release entirely
npx @bpmn-io/release --no-private --bump minor --yes

# force every eligible package to release, even ones without changes
npx @bpmn-io/release --force-release --bump minor --yes

# skip the per-package build step entirely
npx @bpmn-io/release --no-build --bump minor --yes

# version-only: stamp an explicit version onto every package (no commit/tag/publish)
npx @bpmn-io/release version 1.2.0-nightly.0

所有旗帜,快跑 npx @bpmn-io/release --help。 。 。 .

版本命令

bio-release version <spec...> 纯洁 版本 原始的,刻意的 区别于释放。 它在每个工作空间软件包上印出版本 (包括 private 并且调和锁文件

  • 没有承诺,没有标记,没有推
  • 不迅速,不建设,不出版
  • 只锁定文件 —— 说 npm install --package-lock-only这样 node_modules 未被移动

在一个 释放 决定 版本、承诺、标记和(可选的)构建 出版, 版本 只将您已经决定的版本写入磁盘 。 那个 让它成为CI/夜管的正确工具 需要盖章一个版本 (例如:. 1.2.0-nightly.20250811在建造文物之前跨越工作空间—— 替换手卷 set-version 剧本.

一个Spec就是 明确 semver版本(例如:. 1.2.3, (中文(简体) ), 1.2.0-nightly.0 ——使用逐字记录)或a 凸起级别 (单位:千美元)patch, (中文(简体) ), minor, (中文(简体) ), major, (中文(简体) ), premajor, (中文(简体) ), preminor, (中文(简体) ), prepatch, (中文(简体) ), prerelease 解决了 软件包当前版本). 光谱适用于每个软件包; a name=spec 瞄准一个特定的目标(并战胜赤裸的默认值)。 没有软件包 光谱未受破坏 。 这跟每个包的语法一样 release是因为 --bump, (中文(简体) ), 因此,这两个命令是对称的: version 邮票, release 还承诺, 标记 并出版.

# stamp 1.2.0-nightly.0 onto every workspace package, refresh the lockfile
npx @bpmn-io/release version 1.2.0-nightly.0

# stamp only the public packages
npx @bpmn-io/release version 1.2.3 --no-private

# bump every package by one minor, resolved off its current version
npx @bpmn-io/release version minor

# per-package: an explicit version for one, a level for another
npx @bpmn-io/release version @scope/a=1.2.3 @scope/b=minor

内部工作空间依赖范围 ^<version> 作为《京都议定书》 邮票。 运行 npx @bpmn-io/release version --help 所有旗帜.

私人软件包

默认的私人软件包( E)"private": true 中标 package.json已经 与公众同在 向登记册公布。 这对可部署的单重机有用 文物(apps, bunds)生活在私人工作场所,但仍需要共享 版本凸起和驱动实际发行的 git 标记( 例如通过 CI) 管道建设)。 与一个 fixed 这个策略包括了共同的"跳出一切", 标记它,公布什么"案件。 过 --no-private 保留私人软件包 完全释放.

强制释放

默认情况下,一个软件包只有在自其上个发布标记起更改时才会被放出. 过 --force-release 以发布每个符合条件的软件包,无论它是否 已更改。 这就是当一组包组成单一产品时你想要的 必须始终在一个共享的版本下锁定移动,例如a fixed- 战略 单相机,只要改变一个工作空间, 仍应撞出并标记所有.

构建步骤

在发布(或标记)其软件包之前 all npm 脚本作为构建运行 有门 此步骤是可选的 :

  • 如果一个软件包没有 all 剧本被跳过,并附有警告;
  • 通过 --no-build 以跳过每个软件包的构建.

GitHub 发布草稿

在发布承诺和标签被推后, 预填的 GitHub 发布草稿 在浏览器中打开每个发布标记( mirroring) np页:1 name@version 标签在 independent,用于共享 vX.Y.Z 标签在 fixedB. 报告草稿 列出已发运的承诺对象; 预放时作此标记。 私营 软件包从不发布,所以没有草稿.

跳过时 origin 不在 GitHub 上; 如果无法打开浏览器, 则草稿 URL 被打印出来 。 过 --no-release-draft 把它关掉.

释放前

你可以安全切开一个 alpha 编号 : rc 通过交互式方式释放 选择(请您提供预释标识符和正框)或 非互动方式,通过 --preid 与明确、非latest --dist-tag 将在下面出版.

释放前突起水平开始或推进释放前水平,平整 patch 编号 : minor 编号 : major 在释放前 毕业 最终版本:

当前凸起结果
1.2.3preminor (单位:千美元)--preid alpha(中文(简体) )1.3.0-alpha.0
1.3.0-alpha.0prerelease (单位:千美元)--preid alpha(中文(简体) )1.3.0-alpha.1
1.3.0-alpha.1minor (研究生,没有) --preid(中文(简体) )1.3.0

通过 --preid 宣布释放前运行,所以它永远不能释放一个马厩 版本。 仅 pre* 级别, skip 和明确预发版本 该标识符(例如). 1.3.0-rc.2 页:1 --preid rc接受:

  • 互动, patch 编号 : minor 编号 : major 不提供;进入马厩 级别或版本(或预发另一个标识符)
  • 非互动性 --bump - 同样,也给 bio-release version ——在任何事物被触摸之前失败
  • 缺失或畸形 --preid 值也失败

毕业前放行,或放行稳定且放行前的套装,运行 无 --preid。 。 。 .

因为发布前释放动作( 升级, 或在失败后重新剪接) 自上次发布标签, 包坐落在 释放前的版本总是供发布——通常的"没有改变, 跳过它" 闸门在预放时不适用 .

变化探测和突起建议从 package.json 版本,没有 npm上的最高版本——功能分支的预放剪切不 影响其他分支的释放.

在释放之前, origin 需要分支的尖端 释放推 改为; 解开时在已分离的头部上失败, 或者如果提示未包含在您 退票(即推动不会快速推进).

后港——Npm上最高稳定下的稳定版本——需要一个 明确、非latest dist-tag: 向您索取一个(建议) backports),或通过 --dist-tag <tag>。 。 。 .

程序化 API

import { release, createScriptedPrompter } from '@bpmn-io/release';

const result = await release({
  cwd: process.cwd(),          // repository root
  logger: console,             // any { log, warn, error }
  distTag: 'next',             // required for pre-releases and backports; never `latest`
  releaseDraft: false,         // do not open GitHub release drafts (default: true)
  prompter: createScriptedPrompter({ bump: 'preminor', preid: 'alpha', yes: true })
});

// {
//   strategy, released: [{ name, version }], skipped: [name],
//   aborted?: boolean, tags?: [string]
// }

A 类 提示器 驱动交互决定 :

{
  bump({ name, currentVersion, publish, latestStable }): { type, preid, distTag } | 'skip',
  confirm({ plan, strategy }): boolean,
  close(): void
}

type 这是其中之一 patch | minor | major | premajor | preminor | prepatch | prerelease, (中文(简体) ), preid (例如:. alpha)是该程序使用的释放前标识符 pre* 类型,以及 distTag 是 npm 为预放出或后端端口的正立方形 下面的版本 latestStablenpm上最高的稳定版本。 这是必需的 两者,而不得是 latest; 省略仅用于固定的平稳起伏 默认为 latest。 。 。 .

createInteractivePrompter({ preid, distTag }) (阅读线 默认)和 createScriptedPrompter({ bumps, bump, preid, yes }) (无头 已提供。 都拿一个被支配 preid,这使得运行是预放 运行: 脚本提示器丢出一个 ReleaseError 对于稳定谱 互动不提供(见 释放前) (中文(简体) ).

release() 返回结果而不是调用 process.exit,然后丢出 ReleaseError 对于预期的失败( 肮脏的树, 缺少 npm auth, 缺少) 联合国 CLI将这些转换成非零退出.

setVersion

仅用于版本的原始,使用 setVersion数字 :

import { setVersion } from '@bpmn-io/release';

// stamp one version onto every package
const stamped = await setVersion('1.2.0-nightly.0', {
  cwd: process.cwd(),      // repository root
  logger: console,         // any { log, warn }
  excludePrivate: false    // stamp private packages too (default)
});

// [{ name, version }]

// or resolve per-package specs (explicit versions or bump levels)
await setVersion('minor', {
  overrides: { '@scope/a': '1.2.3' },  // wins over the default for @scope/a
  preid: 'alpha'                       // identifier for pre* levels
});

setVersion(defaultSpec, options) 确定每个软件包的目标版本—— defaultSpec 适用于每个发现的软件包, options.overrides[name] 目标为特定目标——然后贴上邮票,标出内部工作空间依赖范围 改为 ^<version> 运行单曲 npm install --package-lock-only (锁文件) 只是,从来没有 node_modules) (中文(简体) ). 没有承诺、标记、快速、构建或 发布。 一个 spec 是一个明确的版本 (1.2.3, (中文(简体) ), 1.2.0-nightly.0) 或起起伏处 职等(patch, (中文(简体) ), minor(中文(简体) ). 丢出一个 ReleaseError 无效的 spec, a 覆盖一个未知软件包的命名或——当 preid 给出了稳定的规格或 a 预发另一个识别符(这些情况中没有任何变异).

光谱解析器也导出为 resolveVersion(spec, current, preid), (中文(简体) ), 与 release() 所以两者都接受同样的语法.

许可证

麻省理工学院

版本与发布记录

@bpmn-io/release 共发布 10 个版本,首次发布于 2026/07/01;过去 12 个月发布了 10 个版本。

版本发布日期距今
0.8.0latest2026/10/2811 天前
0.7.02026/10/0930 天前
0.6.12026/10/071 个月前
0.6.02026/09/211 个月前
0.5.12026/08/282 个月前
0.5.02026/08/182 个月前

关于 @bpmn-io/release 的常见问题

@bpmn-io/release 是什么?

发布已更改的 npm monrepo - bpmn.io 样式包 .

如何安装 @bpmn-io/release?

在项目目录运行 npm install @bpmn-io/release,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 bio-release,可以用 npx bio-release 直接运行。

@bpmn-io/release 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/bpmn-io__release 是否存在。

@bpmn-io/release 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@bpmn-io/release 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@bpmn-io/release 可以商用吗?

@bpmn-io/release 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bpmn-io/release 的下载量有多少?

根据 npm 官方下载统计,@bpmn-io/release 在 2026/10/09 – 2026/11/07 这 30 天内被下载 4,155 次,日均约 139 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bpmn-io/release 还在维护吗?

最新版本 0.8.0 发布于 2026/10/28(11 天前);至今共发布 10 个版本,其中过去 12 个月发布了 10 个;首次发布于 2026/07/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。