1.准备哈士奇:触发GitHooks,执行脚本;$npminstall-Dhuskypackage.json{"scripts":{"prepare":"huskyinstall","lint":"eslint--ext.js,.ts./src--fix"}}$npmrunprepare>huskyinstallhusky-Githooksinstalled这时我们发现项目根目录下多了一个文件夹:.├──.husky|├──-||└──哈士奇.sh|└──.gitignore2。代码格式验证lint-staged:检测文件,只检测暂存区发生变化的文件,可以在提交Lint操作前进行检查;$npminstall-Dlint-stagedpackage.json{"scripts":{"lint-staged":"lint-staged--allow-empty"},"lint-staged":{"src/**/*.{js,ts}":["eslint--fix"]}}$npxhuskyadd.husky/pre-commit"npmrunlint-staged"husky-created.husky/pre-commit执行后发现有.husky目录中的一个额外文件:.├──.husky|└──pre-commit$cat./.husky/pre-commit#!/bin/sh."$(dirname"$0")/_/husky.sh"npm运行lint-staged3。gitcommit消息格式验证commitizen:使用标准化的消息提交;commitlin:检查消息是否符合规范;cz-conventional-changelog:适配器。提供conventional-changelogcriteria(常规提交标准)。根据不同的需求,也可以使用不同的适配器(如:cz-customizable)。$npminstall-Dcommitizen@commitlint/config-conventional@commitlint/cliCommitizen是一个主流的Commit消息生成工具,支持Angular的提交消息格式,被很多主流框架采用。安装完成后,您需要在项目目录中输入以下命令来初始化您的项目以使用cz-conventional-changelog适配器:$npxcommitizeninitcz-conventional-changelog--save-dev--save-exact安装cz-conventional-changelog;将其依赖项保存到package.json中;将config.commitizen键添加到package.json,如下所示:{"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}}}然后使用gitcz而不是gitcommit命令,也可以添加友好的npm命令通过npmruncommit:{"scripts":{"commit":"gitcz"}}至此我们已经按照约定的规范提交了消息,但是如何我们知道提交的消息是否正确吗?然后需要配置刚刚介绍的commitlint。只需一条命令即可完成配置。它会在项目根目录下创建一个commitlint.config.js配置文件:$echo"module.exports={extends:['@commitlint/config-conventional']}">commitlint.config.js会使用验证@commitlint/config-conventional包中提供的验证规则,可以理解为ESLint规则。有了这个验证工具,我们如何触发验证呢?我们希望在提交代码时进行验证。这时候,哈士奇就可以登场了。他可以触发GitHook来执行相应的脚本,而我们只需要在脚本中添加校验工具即可。我们需要定义触发钩子时要执行的Npm脚本:package.json{"scripts":{"commitlint":"commitlint--configcommitlint.config.js-e-V"}}设置提交-msghook并提交消息执行验证。$npxhuskyadd.husky/commit-msg"npmruncommitlint"husky-创建了.husky/commit-msg4。后记此时配置已经完成,现在团队任何成员都必须按照严格的规范提交。欢迎关注,获取更多。微信公众号:薇薇编程世界。
