在团队协作项目开发中,代码提交规范是十分重要的一环。而 commitlint 是一个用来规范代码提交信息的工具。它可以通过配置文件来限定 commit message 的格式,以达到更好的代码整洁性及可读性。其中,@commitlint/resolve-extends 是 commitlint 的插件之一,它可以帮助我们合并配置文件。
安装
可以通过 npm 安装:
npm install --save-dev @commitlint/resolve-extends
或者 yarn 安装:
yarn add -D @commitlint/resolve-extends
使用
在使用 @commitlint/resolve-extends 之前,需要先了解 commitlint 的一些基础用法。
首先,需要新建一个名为 commitlint.config.js 的文件,并配置好规则。比如:
-- -------------------- ---- ------- -------------- - - -------- ------------------------------------ ------ - ------------ - -- --------- -------- ------ ------- -------- ----------- ------- -------- --------- -- -------------------- --- --------- --------------- --- --------- -------------------- --- --------- --- - --展开代码
以上是一个简单的示例,该配置文件基于 @commitlint/config-conventional 扩展而来,规则比较宽松。
接着新建一个 commit message,通过 commitlint 进行校验:
git commit -m "这是一条非常重要的提交消息"
此时会发现,提交失败了,并提示以下信息:
-- -------------------- ---- ------- ----- - ---------- ----- --------- - ------ ------------- - ------- --- --- -- ----- --------------- - ---- --- --- -- ----- ------------ - ----- - --------- - -------- - --- ----- ------------------------------------------------------------------------ ----- - ---------- ---- ------ ---- ---- - -------展开代码
至此,该工具已经可以使用了。但是当我们在多个项目中使用同样的 commitlint 规则时,可能会出现重复配置的情况。@commitlint/resolve-extends 插件就是为了解决这个问题而诞生的。
配置文件合并
在上述规则文件中,我们使用了 @commitlint/config-conventional 作为扩展配置。假设现在有一个 npm 模块名为 my-commitlint-config,其中也包含了 commitlint 的配置,那么可以通过 @commitlint/resolve-extends 来合并两个配置文件,示例代码如下:
module.exports = { extends: ['./node_modules/my-commitlint-config'], plugins: ['@commitlint/resolve-extends'], };
需要将 @commitlint/resolve-extends 加入到 plugins 中。上述代码中,我们将 my-commitlint-config 的目录作为一个扩展,这样就可以将两个配置文件有机地合并起来。
需要注意的是,如果多个扩展存在同名规则,则较后一个生效。
使用 npm 包
在 my-commitlint-config 仓库中,需要提供一个名为 index.js 的非 ESM 格式入口,即 must-use CommonJS:
module.exports = { extends: ['./commitlint.config.js'], };
在项目中,则将 my-commitlint-config 安装至 devDependencies 中,可以通过指定插件名为 resolve-extends 来自动合并配置文件:
module.exports = { extends: ['my-commitlint-config', '@commitlint/config-conventional'], plugins: ['@commitlint/resolve-extends'], };
示例
在一个 React 项目中,我们可以通过如下代码使用 @commitlint/resolve-extends:
module.exports = { extends: ['@commitlint/config-conventional', '@commitlint/resolve-extends'], plugins: ['@commitlint/resolve-extends'], };
然后安装 my-commitlint-config:
npm i -D my-commitlint-config
最后在 my-commitlint-config 建立一个名为 commitlint.config.js 的配置文件:
module.exports = { rules: { 'type-enum': [2, 'always', ['feat', 'fix', 'docs', 'chore', 'test']], 'scope-enum': [2, 'always', ['home', 'learning', 'community']], }, };
至此,配置文件合并完成。在提交时,可以按照合法 commit message 的规则提交。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/110708