npm 包 @commitlint/resolve-extends 使用教程

阅读时长 5 分钟读完

在团队协作项目开发中,代码提交规范是十分重要的一环。而 commitlint 是一个用来规范代码提交信息的工具。它可以通过配置文件来限定 commit message 的格式,以达到更好的代码整洁性及可读性。其中,@commitlint/resolve-extends 是 commitlint 的插件之一,它可以帮助我们合并配置文件。

安装

可以通过 npm 安装:

或者 yarn 安装:

使用

在使用 @commitlint/resolve-extends 之前,需要先了解 commitlint 的一些基础用法。

首先,需要新建一个名为 commitlint.config.js 的文件,并配置好规则。比如:

-- -------------------- ---- -------
-------------- - -
    -------- ------------------------------------
    ------ -
        ------------ -
            --
            ---------
            -------- ------ ------- -------- ----------- ------- -------- ---------
        --
        -------------------- --- ---------
        --------------- --- ---------
        -------------------- --- --------- ---
    -
--
展开代码

以上是一个简单的示例,该配置文件基于 @commitlint/config-conventional 扩展而来,规则比较宽松。

接着新建一个 commit message,通过 commitlint 进行校验:

此时会发现,提交失败了,并提示以下信息:

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

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

----- - ---------- ---- ------ ---- ---- - -------
展开代码

至此,该工具已经可以使用了。但是当我们在多个项目中使用同样的 commitlint 规则时,可能会出现重复配置的情况。@commitlint/resolve-extends 插件就是为了解决这个问题而诞生的。

配置文件合并

在上述规则文件中,我们使用了 @commitlint/config-conventional 作为扩展配置。假设现在有一个 npm 模块名为 my-commitlint-config,其中也包含了 commitlint 的配置,那么可以通过 @commitlint/resolve-extends 来合并两个配置文件,示例代码如下:

需要将 @commitlint/resolve-extends 加入到 plugins 中。上述代码中,我们将 my-commitlint-config 的目录作为一个扩展,这样就可以将两个配置文件有机地合并起来。

需要注意的是,如果多个扩展存在同名规则,则较后一个生效。

使用 npm 包

在 my-commitlint-config 仓库中,需要提供一个名为 index.js 的非 ESM 格式入口,即 must-use CommonJS:

在项目中,则将 my-commitlint-config 安装至 devDependencies 中,可以通过指定插件名为 resolve-extends 来自动合并配置文件:

示例

在一个 React 项目中,我们可以通过如下代码使用 @commitlint/resolve-extends:

然后安装 my-commitlint-config:

最后在 my-commitlint-config 建立一个名为 commitlint.config.js 的配置文件:

至此,配置文件合并完成。在提交时,可以按照合法 commit message 的规则提交。

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