菜单

发布流程

相关源文件

目的与范围

本文档描述了 Semantic UI 用于发布新版本的自动化发布流程。它涵盖了如何创建构建、如何打包分发文件以及如何在 GitHub 上更新组件存储库。有关构建系统本身的信息,请参阅 构建系统

发布流程概览

Semantic UI 的发布流程会自动更新多个存储库,以发布新版本。该流程遵循以下关键步骤:

  1. 构建所有 Semantic UI 资源
  2. 更新单独的分发存储库(CSS/LESS)
  3. 更新单独的组件存储库(Dropdown、Modal 等)
  4. 为所有更新的存储库创建 GitHub 发布

来源: tasks/admin/release.js29-37 tasks/admin/components/update.js5-13 tasks/admin/distributions/update.js5-13

发布配置

版本管理

发布版本根据以下来源确定,优先级顺序如下:

  1. package.json(如果包名称为“semantic-ui”)
  2. semantic.json(备用)

此版本号将在整个发布流程中使用,用于标记存储库和更新包文件中的版本字段。

来源: tasks/config/project/release.js17-38 package.json1-94

关键配置文件

文件目的
package.json定义版本和依赖项
tasks/config/project/release.js包含发布元数据,例如标题、存储库 URL 和横幅
tasks/config/admin/release.js包含组件和分发存储库信息

分发存储库

Semantic UI 为不同的分发格式维护单独的存储库,以便开发人员可以仅包含他们需要的内容。

  1. CSS 分发:包含预编译的 CSS,可直接使用
  2. LESS 分发:包含 LESS 源文件,可用于自定义

分发创建流程

在创建分发存储库时,该流程涉及:

  1. 从主存储库复制相应的文件
  2. 更新 package.json 以包含当前版本
  3. 创建包管理器所需的文件(例如 Meteor 的 package.js)
  4. 提交和推送更改

来源: tasks/admin/distributions/create.js46-223 tasks/admin/distributions/update.js40-191

组件存储库

每个 UI 组件(Button、Dropdown、Modal 等)都维护在其自己的存储库中。这允许开发人员仅包含他们所需的组件。

组件更新流程

组件更新流程包括:

  1. 检查存储库是否存在,如果不存在则创建它
  2. 从主构建中复制组件文件
  3. 创建必要的包文件(package.json、bower.json 等)
  4. 创建特定于组件的文档
  5. 提交和推送更改
  6. 如果版本已更改,则创建 GitHub 发布

来源: tasks/admin/components/create.js56-327 tasks/admin/components/update.js40-189

构建发布

在更新单独的存储库之前,发布流程会通过以下步骤构建所有 Semantic UI 文件:

  1. 构建 JavaScript 文件
  2. 构建 CSS 文件
  3. 复制资源文件(图像、字体)
  4. 打包压缩和未压缩的版本

来源: tasks/build.js17-47 tasks/build/javascript.js46-80 tasks/build/css.js49-116 tasks/build/assets.js26-40

GitHub 版本创建

对于每个组件和分发存储库,如果版本已更改,则会创建一个 GitHub 发布。

  1. 检查组件版本是否与主版本不同
  2. 如果不同,则创建一个 GitHub 发布,并将新版本作为标签名
  3. 使用特定的提交 SHA 作为标签的目标

来源: tasks/admin/components/update.js145-168 tasks/admin/distributions/update.js141-167

OAuth 配置

发布流程需要 GitHub 身份验证才能创建存储库、提交和发布。这通过存储在 tasks/config/admin/oauth.js 中的 OAuth 令牌来完成。

配置项目的
token用于身份验证的 GitHub OAuth 令牌
名称Git 操作的提交者姓名
emailGit 操作的提交者电子邮件

来源: tasks/admin/components/update.js32-34 tasks/admin/distributions/update.js32-34 tasks/config/admin/github.js9-32

运行发布

要运行完整的发布流程,请执行以下命令:

gulp release

这将:

  1. 构建 Semantic UI
  2. 初始化并更新分发存储库
  3. 初始化并更新组件存储库
  4. 为所有更新的存储库创建 GitHub 发布,并添加版本更改

来源: tasks/admin/release.js30-42

发布产物

发布流程完成后,会生成以下制品:

  1. 位于 dist/ 目录中的主要分发文件
  2. 更新后的单独组件存储库
  3. 更新后的分发存储库(CSS/LESS)
  4. 已使用新版本标记的 GitHub 发布

每个组件存储库包含:

  • 组件 CSS 和 JavaScript
  • README.md 包含特定于组件的文档
  • package.json、bower.json 和 composer.json,用于包管理器
  • 用于 Meteor 集成的 meteor package.js 文件

来源: tasks/admin/components/create.js138-316 tasks/admin/distributions/create.js146-196