@lx-frontend/lixin-release
v0.1.3
Published
lixin release cli
Downloads
955
Readme
@lx-frontend/lixin-release
lixin release cli —— 基于 Changesets 的自动化发布工具,适用于 monorepo 和单体项目,通常配合 CI/CD 流水线使用。
安装
npm i -g @lx-frontend/lixin-release使用
lxrelease在项目根目录(或 CI 环境中)运行即可,无需额外参数。
工作流程
执行 lxrelease 后,CLI 会按以下步骤自动完成发布:
初始化 Changeset 配置
- 确保
.changeset/目录存在 - 写入
changelog-config.js和config.json(始终覆盖,保持最新)
- 确保
读取 Commit 信息
- 支持 merge commit(自动取
HEAD^2作为信息来源) - 普通 commit 直接取
HEAD
- 支持 merge commit(自动取
推断语义化版本类型
| Commit 前缀 | 版本类型 | | ----------------------------- | -------- | |
feat!:/BREAKING CHANGE:|major| |feat:/feat(scope):|minor| | 其他 |patch|确定目标包
- 默认:通过
pnpm list -r --filter="...[HEAD~1]"检测自上次 commit 以来有变动的包 [release-all]标记:在 commit message 中加入[release-all],强制对所有 workspace 包发布
- 默认:通过
生成 Changeset 文件
- 在
.changeset/下生成auto-<timestamp>.md
- 在
配置 Git(CI 环境)
- 若环境变量
GITLAB_TOKEN、CI_SERVER_HOST、CI_PROJECT_PATH均存在,自动配置 git user 和 remote URL
- 若环境变量
版本 → 发布 → 推送
pnpm changeset version git add . && git commit pnpm changeset publish git push origin HEAD:master --follow-tags -o ci.skip
CI/CD 集成示例
# .gitlab-ci.yml 示例
release:
stage: release
script:
- lxrelease
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH所需环境变量:
| 变量 | 说明 |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| GITLAB_TOKEN | GitLab OAuth2 token,用于推送代码和 tag【建议创建 Project Access Tokens,配置 write_repository scope 和 Maintainer role】 |
Commit Message 规范
遵循 Conventional Commits 规范:
feat(button): add size prop # minor
fix(input): handle empty value # patch
feat!: redesign API # major
chore: update deps [release-all] # patch,并发布所有包Changeset 配置说明
CLI 会自动写入以下配置到 .changeset/config.json:
{
"changelog": ["./changelog-config.js", {}],
"commit": false,
"access": "restricted",
"baseBranch": "master",
"updateInternalDependencies": "patch",
"privatePackages": { "version": true, "tag": true }
}注意
- 由于涉及往仓库中 push 代码, 需注意在
.gitignore中排除无关文件,包括各类缓存或构建产物等 - 忽略
.changeset目录
License
MIT
