Modern.js 默认集成了 changesets 用于模块和 Monorepo 工程方案的包版本管理。
Changesets 具有以下几个特点:
在开发时,需要开发者提供本次变更涉及的包名称、升级版本类型(pathch
、minor
、major
)及变更信息,即 changeset。
在发布版本时,会根据 changeset 内容自动升级对应包的版本号,并在对应的包中生成 changelog 信息。
在 Monorepo 项目中,changeset 会自动生成仓库依赖图,升级时只会升级变更包及相关依赖包的版本号。
Modern.js 默认创建的模块和 Monorepo 工程方案项目已经初始化完成 changesets,在项目根目录会自动创建 .changeset
目录,及 .changeset/config.json
的配置文件。
并且,Modern.js 在其对应的工程方案工具 @modern-js/module-tools
和 @modern-js/monorepo-tools
提供了 changesets 相应的命令,无需再手动安装 changesets 相关依赖。
Changesets 默认配置如下:
{
"$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"linked": [],
"access": "restricted",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
配置文件提供了生成 changesets 的一些基本配置,字段详细介绍请参考 Changesets 配置文件。
change
: 创建一个 changeset,执行完成该命令后会自动在 .changeset
目录生成一个 changeset 文件。
bump
: 根据当前 changeset 升级对应包版本号。
pre
: 标记进入和退出 pre-release 模式,在 pre release 模式下执行 bump
命令,将会生成 x.x.x-${pre-tag}.x
的版本号格式。
release
: 发布包到 NPM。
status
: 查看当前 changeset 状态。
gen-release-note
: 根据当前的 chagneset 状态生成 Release Note 信息。
具体命令支持的参数可以查看后续对应章节介绍。