A tool for releasing front-end projects, supporting multiple release modes and configurations, simplifying the release process and improving efficiency.
npm install @qlover/fe-release


一个基于 @changesets/cli 构建的专业前端发布自动化工具,提供增强的工作流程,用于自动化 PR 管理和发布流程。
- 特性
- 安装
- 快速开始
- 使用方法
- 配置
- 工作流程
- 常见问题
- 贡献指南
- 许可证
- 自动化版本管理
- 基于 @changesets/cli 的可靠版本控制
- 根据变更自动进行版本更新
- 可配置的版本递增策略
- 支持语义化版本(Semantic Versioning)
- 灵活的发布工作流
- 手动发布流程,提供直接控制
- 基于 PR 的自动化发布工作流(GitHub)
- 可自定义的发布策略
- 支持多环境发布(开发、测试、生产)
- GitHub 集成
- 自动化 PR 创建和管理
- 智能 PR 标签系统
- 自动生成发布说明
- GitHub Actions 集成
- 支持自动合并和冲突解决
- 工作区支持
- 一流的 monorepo 支持
- 多包发布协调
- 依赖图感知
- 选择性包发布
- 支持私有包发布
- 丰富的配置选项
- 丰富的 CLI 选项
- 通过 fe-config.json 配置
- 环境变量支持
- 插件系统支持自定义扩展
``bash使用 npm
npm install @qlover/fe-release --save-dev
🏃 快速开始
1. 基础发布
`bash
创建发布 PR
fe-release -P预览发布(不实际执行)
fe-release --dry-run指定版本类型发布
fe-release --changelog.increment=major
`2. 工作区发布
`bash
发布多个包
fe-release --workspaces.change-labels=pkg1,pkg2 -P指定发布目录
fe-release --publish-path=packages/core
`3. 环境发布
`bash
发布到测试环境
fe-release --env=test -P发布到生产环境
fe-release --env=prod -P
`💻 使用方法
$3
`bash
fe-release [options]
`#### 核心选项
| 选项 | 描述 | 默认值 |
| --------------------------- | ------------------------ | ------- |
|
-v, --version | 显示版本号 | - |
| -d, --dry-run | 预览模式,不实际执行更改 | false |
| -V, --verbose | 显示详细日志 | false |
| -p, --publish-path | 包发布路径 | - |
| -P, --githubPR.release-PR | 创建发布 PR | false |
| --env | 发布环境 | prod |#### 高级选项
| 选项 | 描述 | 默认值 |
| -------------------------------- | ---------------- | ------------------------------- |
|
-b, --branch-name | 发布分支模板 | release-${pkgName}-${tagName} |
| -s, --source-branch | 源分支 | master |
| -i, --changelog.increment | 版本递增类型 | patch |
| --changelog.skip | 跳过更新日志生成 | false |
| --packages-directories | 变更包目录 | - |
| -l, --workspaces.change-labels | 变更标签 | - |⚙️ 配置
$3
| 变量 | 描述 | 默认值 |
| ------------------- | ------------- | ------ |
|
FE_RELEASE | 启用/禁用发布 | true |
| FE_RELEASE_BRANCH | 源分支 | - |
| FE_RELEASE_ENV | 发布环境 | - |
| FE_RELEASE_TOKEN | GitHub Token | - |$3
`json
{
"release": {
"publishPath": "",
"autoMergeReleasePR": false,
"autoMergeType": "squash",
"branchName": "release-${pkgName}-${tagName}",
"PRTitle": "[${pkgName} Release] Branch:${branch}, Tag:${tagName}, Env:${env}",
"PRBody": "This PR includes version bump to ${tagName}",
"packagesDirectories": ["packages/*"],
"githubPR": {
"commitArgs": ["--no-verify"],
"pushChangedLabels": true,
"releaseName": "Release ${name} v${version}",
"commitMessage": "chore(tag): ${name} v${version}"
},
"changelog": {
"types": [
{ "type": "feat", "section": "#### ✨ Features", "hidden": false },
{ "type": "fix", "section": "#### 🐞 Bug Fixes", "hidden": false },
{ "type": "chore", "section": "#### 🔧 Chores", "hidden": true },
{
"type": "docs",
"section": "#### 📝 Documentation",
"hidden": false
},
{
"type": "refactor",
"section": "#### ♻️ Refactors",
"hidden": false
},
{ "type": "perf", "section": "#### 🚀 Performance", "hidden": false },
{ "type": "test", "section": "#### 🚨 Tests", "hidden": true },
{ "type": "style", "section": "#### 🎨 Styles", "hidden": true },
{ "type": "ci", "section": "#### 🔄 CI", "hidden": true },
{ "type": "build", "section": "#### 🚧 Build", "hidden": false },
{ "type": "revert", "section": "#### ⏪ Reverts", "hidden": true },
{ "type": "release", "section": "#### 🔖 Releases", "hidden": true }
]
}
}
}
`🔄 工作流程
$3
`mermaid
graph LR
A[代码变更] --> B[运行 fe-release]
B --> C[版本更新]
C --> D[生成更新日志]
D --> E[创建 Git 标签]
E --> F[发布到 NPM]
F --> G[创建 GitHub Release]
`$3
`mermaid
graph LR
A[创建 PR] --> B[自动添加标签]
B --> C[创建发布 PR]
C --> D[更新版本和日志]
D --> E[CI 发布]
E --> F[发布和打标签]
`🔍 常见问题
$3
1. 发布被跳过
`bash
Error: Skip Release
` 解决方案:
- 检查
FE_RELEASE 环境变量
- 确认是否有需要发布的变更
- 验证包版本是否需要更新2. PR 创建失败
- 验证 GitHub token 权限
- 检查仓库访问权限
- 确认分支是否存在
- 检查 PR 标题格式
3. 发布失败
- 确认 npm 登录状态
- 检查包名是否重复
- 验证版本号是否合法
- 检查网络连接
$3
启用详细日志:
`bash
fe-release -V
``1. Fork 本仓库
2. 创建特性分支
3. 提交变更
4. 推送到分支
5. 创建 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- @changesets/cli 团队
- 所有项目贡献者
---
更多信息,请访问我们的文档。