npm 包 semantic-release-github 使用教程

阅读时长 8 分钟读完

前言

在开发过程中,发布版本是非常重要的。而版本发布过程中,需要注意的方面也很多,例如版本号更新规则、版本发布流程等等。在前端开发中,我们通常会使用 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 等。安装步骤如下:

安装完成后,我们需要将以下代码添加到项目的 package.json 中:

-- -------------------- ---- -------
-
    ---------- -
        ---------- -
            -
                ------------------------------
                -
                    ---------------- --------------
                -
            --
            -
                ------------------------
                -
                    ------------- ------
                -
            --
            -
                ------------------------
                -
                    --------- ---------------- ----------------
                    ---------- ---------------- ---------------------- ----- ----------------------------
                -
            --
            --------------------------
        -
    -
-

配置

semantic-release-github 的配置主要有以下几个部分:

  1. 传播信息规则(Commit Message Convention),即 git commit 信息的规范。你可以使用 conventional commits 规范,也可以自定义规范。一般情况下,使用 conventional commits 规范比较好。其规范的格式为:
  1. 版本号规则(Versioning)。你可以使用 semver 规范,也可以自定义规范。版本号规则负责根据 git commit 信息自动计算生成下一个版本号。

  2. 发布流程(Release Workflow)。在版本号规则的基础上,定义如何将代码发布到 git 仓库和 npm registry。

具体的,你需要配置或使用如下内容:

Commit Message Convention

其中,type 是必须的,是本次 commit 的类型,例如 feat(新功能)、fix(修复 bug)、docs(文档更新)等。你可以在 commit 信息中指定 message 的类型,方便 semantic-release-github 适配。例如:

其中,feat 是类型。

如果你只是想使用默认的 conventional commits 规范,你可以使用 commitizen 对项目进行初始化。

这个命令会生成一个它认为“符合常规”规范的 .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 中设置。这个过程通常分为三个步骤:

  1. 生成 changelog,记录本次更新的变化,包括新增功能、bug 修复等等。

  2. 发布 npm 包。

  3. 发布到 git 仓库。

-- -------------------- ---- -------
-
    ---------- -
        ---------- -
            -
                ------------------------------
                -
                    ---------------- --------------
                -
            --
            -
                ------------------------
                -
                    ------------- ------
                -
            --
            -
                ------------------------
                -
                    --------- ---------------- ----------------
                    ---------- ---------------- ---------------------- ----- ----------------------------
                -
            --
            --------------------------
        -
    -
-

总结

semantic-release-github 的使用非常简单,只需配置相应的规范即可自动化管理和发布版本,省去了手动处理版本号、changelog 等繁琐的工作。它的出现大大提高了前端开发的效率,同时也保证了版本迭代的一致性和可追溯性。因此,在开发过程中,推荐使用这个工具来管理版本发布。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedc4f7b5cbfe1ea06121c3

纠错
反馈