@bpmn-io/释放
发布已更改的 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.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
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() 所以两者都接受同样的语法.
许可证
麻省理工学院