前言
在开发过程中,发布版本是非常重要的。而版本发布过程中,需要注意的方面也很多,例如版本号更新规则、版本发布流程等等。在前端开发中,我们通常会使用 npm 来管理我们的项目依赖,同时也会使用 semver 规范来定义版本号。但是,手动发布版本是一个费时费力的工作,而 semantic-release-github 这个 npm 包可以帮助我们自动化版本管理发布,大大提高了我们的效率。
semantic-release-github 简介
semantic-release-github 是一个 npm 包,它可以自动化地管理和发布版本。它的工作原理是根据 git commit 信息自动更新你的项目版本号并生成 changelog,最后将整个过程一键化地自动化发布到指定的 git 仓库和 npm registry。
semantic-release-github 的使用需要配合 git commitizen、conventional-changelog 等工具,以及适当的 git commit 信息规范。使用它可以保证版本迭代的一致性和可追溯性,同时减少人工管理版本号、生成 changelog 等繁琐的管理工作。
安装
在使用 semantic-release-github 之前,需要先安装相应的依赖工具,包括 git commitizen、conventional-changelog 和 semantic-release-github 等。安装步骤如下:
# 安装 git commitizen 和 conventional-changelog npm install -g commitizen conventional-changelog # 初始化项目,使其支持 git commitizen commitizen init cz-conventional-changelog --save-dev --save-exact # 安装 semantic-release-github npm install @semantic-release/github --save-dev
安装完成后,我们需要将以下代码添加到项目的 package.json 中:
-- -------------------- ---- ------- - ---------- - ---------- - - ------------------------------ - ---------------- -------------- - -- - ------------------------ - ------------- ------ - -- - ------------------------ - --------- ---------------- ---------------- ---------- ---------------- ---------------------- ----- ---------------------------- - -- -------------------------- - - -
配置
semantic-release-github 的配置主要有以下几个部分:
- 传播信息规则(Commit Message Convention),即 git commit 信息的规范。你可以使用 conventional commits 规范,也可以自定义规范。一般情况下,使用 conventional commits 规范比较好。其规范的格式为:
<type>[optional scope]: <description> [optional body] [optional footer(s)]
版本号规则(Versioning)。你可以使用 semver 规范,也可以自定义规范。版本号规则负责根据 git commit 信息自动计算生成下一个版本号。
发布流程(Release Workflow)。在版本号规则的基础上,定义如何将代码发布到 git 仓库和 npm registry。
具体的,你需要配置或使用如下内容:
Commit Message Convention
<type>[optional scope]: <description> [optional body] [optional footer(s)]
其中,type 是必须的,是本次 commit 的类型,例如 feat(新功能)、fix(修复 bug)、docs(文档更新)等。你可以在 commit 信息中指定 message 的类型,方便 semantic-release-github 适配。例如:
feat: 新增XXX功能
其中,feat 是类型。
如果你只是想使用默认的 conventional commits 规范,你可以使用 commitizen 对项目进行初始化。
commitizen init cz-conventional-changelog --save-dev --save-exact
这个命令会生成一个它认为“符合常规”规范的 .czrc 文件。该命令还会将 cz-conventional-changelog 安装到 package.json 中。
每次使用 git commit 的时候,你不应该在 -m 中填写消息,而是运行 git cz。(因为你使用 npm run release 发布版本时会依据这种规范来发布版本号)。
Versioning
你需要在 package.json 中定义你的版本号规则。一般情况下,使用 semver 规范比较好。semver 同样也可以通过 package.json 来配置,例如:
-- -------------------- ---- ------- - ---------- -------- ---------- - ---------- ------------------ -- ------------- - ------- ------ ------ ------------------------------- -- ------- - ------ ---------------------------------- -- --------------- --- ------------------ - ------------------------------ --------- ------------------------ --------- ------------------------ --------- -------------------------------------------- --------- --------------------------- -------- -- ---------- - ---------- - ------------------------------------ ------------------------------------------- - - -
定义了 version 之后,semantic-release-github 会根据 commit 信息生成并更新版本号。
Release Workflow
最后,还需要定义发布流程,这个可以在 package.json 中设置。这个过程通常分为三个步骤:
生成 changelog,记录本次更新的变化,包括新增功能、bug 修复等等。
发布 npm 包。
发布到 git 仓库。
-- -------------------- ---- ------- - ---------- - ---------- - - ------------------------------ - ---------------- -------------- - -- - ------------------------ - ------------- ------ - -- - ------------------------ - --------- ---------------- ---------------- ---------- ---------------- ---------------------- ----- ---------------------------- - -- -------------------------- - - -
总结
semantic-release-github 的使用非常简单,只需配置相应的规范即可自动化管理和发布版本,省去了手动处理版本号、changelog 等繁琐的工作。它的出现大大提高了前端开发的效率,同时也保证了版本迭代的一致性和可追溯性。因此,在开发过程中,推荐使用这个工具来管理版本发布。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedc4f7b5cbfe1ea06121c3