2.3.2 • Published 6 months ago

@qlover/fe-release v2.3.2

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

Fe-release

npm version license PRs Welcome

一个基于 @changesets/cli 构建的专业前端发布自动化工具,提供增强的工作流程,用于自动化 PR 管理和发布流程。

📚 目录

✨ 特性

  • 自动化版本管理

    • 基于 @changesets/cli 的可靠版本控制
    • 根据变更自动进行版本更新
    • 可配置的版本递增策略
    • 支持语义化版本(Semantic Versioning)
  • 灵活的发布工作流

    • 手动发布流程,提供直接控制
    • 基于 PR 的自动化发布工作流(GitHub)
    • 可自定义的发布策略
    • 支持多环境发布(开发、测试、生产)
  • GitHub 集成

    • 自动化 PR 创建和管理
    • 智能 PR 标签系统
    • 自动生成发布说明
    • GitHub Actions 集成
    • 支持自动合并和冲突解决
  • 工作区支持

    • 一流的 monorepo 支持
    • 多包发布协调
    • 依赖图感知
    • 选择性包发布
    • 支持私有包发布
  • 丰富的配置选项

    • 丰富的 CLI 选项
    • 通过 fe-config.json 配置
    • 环境变量支持
    • 插件系统支持自定义扩展

🚀 安装

# 使用 npm
npm install @qlover/fe-release --save-dev

# 使用 yarn
yarn add @qlover/fe-release --dev

# 使用 pnpm
pnpm add @qlover/fe-release -D

🏃 快速开始

  1. 基础发布
# 创建发布 PR
fe-release -P

# 预览发布(不实际执行)
fe-release --dry-run

# 指定版本类型发布
fe-release --changelog.increment=major
  1. 工作区发布
# 发布多个包
fe-release --workspaces.change-labels=pkg1,pkg2 -P

# 指定发布目录
fe-release --publish-path=packages/core
  1. 环境发布
# 发布到测试环境
fe-release --env=test -P

# 发布到生产环境
fe-release --env=prod -P

💻 使用方法

命令行接口

fe-release [options]

核心选项

选项描述默认值
-v, --version显示版本号-
-d, --dry-run预览模式,不实际执行更改false
-V, --verbose显示详细日志false
-p, --publish-path包发布路径-
-P, --githubPR.release-PR创建发布 PRfalse
--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变更标签-

⚙️ 配置

环境变量

变量描述默认值
FE_RELEASE启用/禁用发布true
FE_RELEASE_BRANCH源分支-
FE_RELEASE_ENV发布环境-
FE_RELEASE_TOKENGitHub Token-

fe-config.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 }
      ]
    }
  }
}

🔄 工作流程

手动发布流程

graph LR
    A[代码变更] --> B[运行 fe-release]
    B --> C[版本更新]
    C --> D[生成更新日志]
    D --> E[创建 Git 标签]
    E --> F[发布到 NPM]
    F --> G[创建 GitHub Release]

PR 发布流程(GitHub)

graph LR
    A[创建 PR] --> B[自动添加标签]
    B --> C[创建发布 PR]
    C --> D[更新版本和日志]
    D --> E[CI 发布]
    E --> F[发布和打标签]

🔍 常见问题

常见问题

  1. 发布被跳过

    Error: Skip Release

    解决方案:

    • 检查 FE_RELEASE 环境变量
    • 确认是否有需要发布的变更
    • 验证包版本是否需要更新
  2. PR 创建失败

    • 验证 GitHub token 权限
    • 检查仓库访问权限
    • 确认分支是否存在
    • 检查 PR 标题格式
  3. 发布失败

    • 确认 npm 登录状态
    • 检查包名是否重复
    • 验证版本号是否合法
    • 检查网络连接

调试模式

启用详细日志:

fe-release -V

🤝 贡献指南

  1. Fork 本仓库
  2. 创建特性分支
  3. 提交变更
  4. 推送到分支
  5. 创建 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

🙏 致谢


更多信息,请访问我们的文档

2.3.2

6 months ago

2.3.1

6 months ago

2.3.0

7 months ago

2.2.0

7 months ago

2.1.6

7 months ago

2.1.5

7 months ago

2.1.4

7 months ago

2.1.3

7 months ago

2.1.2

7 months ago

2.1.1

7 months ago

2.1.0

7 months ago

2.0.14

7 months ago

2.0.13

7 months ago

2.0.12

7 months ago

2.0.11

7 months ago

2.0.10

7 months ago

2.0.6

8 months ago

2.0.5

8 months ago

2.0.4

8 months ago

2.0.0

8 months ago

1.0.10

8 months ago

1.0.9

8 months ago

1.0.8

8 months ago

1.0.5

8 months ago

0.1.7

9 months ago

0.1.6

9 months ago

0.1.5

9 months ago

0.1.4

9 months ago

0.1.3

10 months ago

0.1.2

10 months ago

0.1.1

10 months ago

0.1.0

10 months ago