# @bpmn-io/release 中文文档

规范地址：https://npmcn.com/package/%40bpmn-io/release/

版本：0\.8\.0
npm 元数据更新时间：2026-10-28T08:25:29.546Z
中文译文更新时间：2026-11-08T13:23:54.861Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bpmn-io/release
原文对照：https://npmcn.com/package/%40bpmn-io/release/?lang=original
项目主页：https://github.com/bpmn-io/release#readme
源码仓库：https://github.com/bpmn-io/release

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：91.1 kB，14 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22
- 运行依赖：2 个
- 首次发布：2026-06-30T20:53:35.699Z
- 最新版本发布：2026-10-28T08:25:29.223Z
- 近 30 天下载量：4155（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：10（近 12 个月 10 个）

## 中文简介

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

## 安装

```sh
npm install @bpmn-io/release
```

也可以使用：`pnpm add @bpmn-io/release`、`yarn add @bpmn-io/release`、`bun add @bpmn-io/release`

## README

# @bpmn-io/释放

[![CI](https://github.com/bpmn-io/release/actions/workflows/CI.yml/badge.svg)](https://github.com/bpmn-io/release/actions/workflows/CI.yml)

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

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

## 使用量

通过 [命令行](https://npmcn.com/package/%40bpmn-io/release/#readme-cli) 或作为 [图书馆](https://npmcn.com/package/%40bpmn-io/release/#readme-programmatic-api)。 。 。 .

## 所需资源

-   构建器软件包的使用 [npm 工作空间](https://docs.npmjs.com/cli/using-npm/workspaces)。 。 。 .
-   每个软件包都显示一个 `npm run all` 脚本
-   A 类 [已配置的释放策略](https://npmcn.com/package/%40bpmn-io/release/#readme-strategy)

## 战略

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

```jsonc
{
  "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`数字 :

```jsonc
{
  "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`。 。 。 .

## 国 际

```bash
# 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` 还承诺, 标记 并出版.

```bash
# 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`](https://github.com/sindresorhus/np)页:1 `name@version` 标签在 `independent`,用于共享 `vX.Y.Z` 标签在 `fixed`B. 报告草稿 列出已发运的承诺对象; 预放时作此标记。 私营 软件包从不发布,所以没有草稿.

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

## 释放前

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

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

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

```js
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 类 **提示器** 驱动交互决定 :

```js
{
  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 为预放出或后端端口的正立方形 下面的版本 `latestStable`npm上最高的稳定版本。 这是必需的 两者,而不得是 `latest`; 省略仅用于固定的平稳起伏 默认为 `latest`。 。 。 .

`createInteractivePrompter({ preid, distTag })` (阅读线 默认)和 `createScriptedPrompter({ bumps, bump, preid, yes })` (无头 已提供。 都拿一个被支配 `preid`,这使得运行是预放 运行: 脚本提示器丢出一个 `ReleaseError` 对于稳定谱 互动不提供(见 [释放前](https://npmcn.com/package/%40bpmn-io/release/#readme-pre-releases)) (中文(简体) ).

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

### `setVersion`

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

```js
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 是什么？

发布已更改的 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 和提交记录判断。

