关于husky:使用husky-commitlint检查提交描述

应用husky + commitlint查看提交形容在团队合作开发中,良好的代码提交形容能够进步代码的可读性、维护性和版本控制。然而,因为集体习惯差别较大,代码提交形容往往难以对立标准,这时候应用工具来查看提交形容就十分必要了。本文将介绍如何应用husky与commitlint来查看代码提交形容的规范性。 1:装置huskyHusky是一个能够用来治理.git/hooks/目录下钩子脚本的工具。它能够在git的某些动作(如提交或合并等)之前执行咱们定义的脚本,从而能够帮忙咱们更好地控制代码品质。装置husky最简略的办法是通过npm: npm install husky --save-dev 2:装置commitlintCommitlint是一个用于校验提交信息格式的工具,它会依据预设规定进行查看,如果不合乎规定,则会提醒错误信息。同样,通过npm装置commitlint也十分不便: npm install @commitlint/{config-conventional,cli} --save-dev3:创立commitlint配置文件为了让commitlint晓得要应用哪些规定来查看提交信息,咱们须要创立一个.commitlintrc.js文件,并增加以下内容: module.exports = { extends: ['@commitlint/config-conventional'],};这里咱们应用了一个预设的规定集,即config-conventional。这个规定集比拟罕用,它会查看提交信息的格局是否合乎Angular格调的约定,例如: <type>[optional scope]: <description>[optional body][optional footer(s)]其中,type示意提交类型,如feat、fix、docs等;scope示意作用域,能够是任意字符串;description示意简短的形容信息,应该尽量精简但又不失清晰;body示意具体的形容信息,能够省略;footer示意一些附加信息,如issue号码、关联的MR等。 4:增加husky和commitlint钩子咱们须要在package.json文件中增加以下配置: { "husky": { "hooks": { "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" } }}这样,每次执行提交操作时,husky都会主动调用commitlint来查看提交信息。 5:测试当初,咱们能够开始测试成果了。为了测试,能够先在git仓库中创立一个新的分支,并进行一些随便的批改。而后,执行以下命令提交代码: git commit -m "this is an invalid commit message"如果提交信息不合乎规定,则会提醒以下错误信息: ⧗ input: this is an invalid commit message✖ subject may not be empty [subject-empty]✖ type may not be empty [type-empty]这阐明提交信息不符合规范,须要进行批改。 总结在本文中,咱们介绍了如何应用husky和commitlint来查看代码提交形容的规范性。应用这种形式能够帮忙开发人员更好地控制代码品质,进步团队合作效率。

May 19, 2023 · 1 min · jiezi

关于husky:huskyeslintprettier规范你的项目

husky装置记录husky-init依据官网步骤来,应用官网举荐的形式为我的项目退出husky npx husky-init && npm install # npm npx husky-init && yarn # Yarn 1 yarn dlx husky-init --yarn2 && yarn # Yarn 2因为我的yarn版本是1.22.10,所以这里我应用的是npx husky-init && yarn 执行npx husky-init的时候报了如下谬误: cj@cjdembp sweet-app % npx husky-initnpx: 2 装置胜利,用时 5.859 秒husky-init updating package.json setting prepare script to command "husky install"fatal: Not a git repository (or any of the parent directories): .gitcan't create hook, .husky directory doesn't exist (try running husky install)很显著,这个谬误是因为我还没把我的我的项目初始化为一个git仓库上面执行git init,之后再执行npx husky-init && yarn功败垂成! ...

November 18, 2021 · 2 min · jiezi

关于husky:利用husky实现前端项目自定义规范校验

提交Bug修复时容易遗记同步调整版本号,如果脱漏了很容易造成漏更新等问题,所以打算将版本号批改做成硬性的检测标准。 实现成果跟ESlint的检测差不多,Git提交后主动执行代码检测,不符合规范就报错撤回提交,符合规范就通过提交。 剖析次要要解决以下几个问题: 触发检测的形式 既然想到ESlint,那第一个念头是给ESlint减少自定义插件。但认真又想了想,因为检测的是非JavaScript文件,而且也不是代码那种逻辑检测,只是在提交前做一下相应的文件是否有批改,实际上并不是很适宜的场景。 最适宜的还是间接用Git的钩子,ESlint就是利用husky在相干钩子中调用检测。 之前写了篇husky7 + commitlint + lint-staged 记录,所以流程比拟相熟,只须要在.husky文件夹下增加相干钩子名称的文件,而后间接写shell脚本就能登程。 单纯的脚本并不利于保护,所以打算跟ESlint一样,写成命令行式的,也不便前期减少性能。 怎么通晓文件变动 这个就是Git自带的性能了,只须要利用git diff,比照package.json文件,就会输入比照信息。 但文本的不好剖析,一下子又没找到相干可用的插件,于是用peggy本人写了个相干的解析器,将文本转换成不便解析的json数据。 提交失败后终止提交 shell脚本胜利返回0、失败返回非0,Node.js提供了相干办法process.exit(1)。 如果有不懂的形式实际上翻一翻lint-staged都能找到所需的答案,毕竟现成的例子在那里。 提供能够被动绕过提交的形式 既然是退出钩子中,不须要的时候必定不能删了钩子再提交。那只能在提交逻辑中做跳过检测。 最合适的是在提交音讯的body中携带指定的关键字,当程序辨认到关键字就跳过检测逻辑即可。 要害逻辑提供命令行调用命令创立一个空我的项目,增加bin字段,为咱们的程序减少相干的调用命令 "bin":{ "check": "./dist/index.js"}对应的check是命令行的调用名称,对应的值是要执行的JavaScript文件: #!/usr/bin/env nodeconsole.log('hello')这样就能打印出hello了。 当然这样还不够,命令行程序还可能携带参数,或是其余性能,所以能够配合Commander.js辅助解决命令行命令。 因为和业务代码写在一起,只能提供大略的示例: import { Command } from "commander";const program = new Command();program .command("change") .option( "--commitMsgPath <filePath>", "当 commit message 中蕴含指定字符串时跳过以后命令检测" ) .description("检测版本号是否有变动") .action(async ({ commitMsgPath }: { commitMsgPath: string }) => { try { let msg: string[]; if (commitMsgPath) msg = readGitMessage(commitMsgPath); const flag = await checkVersion(msg); if (!flag) throw new Error("请批改版本号再提交"); } catch (e) { console.error(`${DATA.NAME}: ${e.name} ${e.message}`); process.exit(1); } }); program.parse(process.argv);调用git diff判断数据执行git命令能够应用simple-git这个库,性能很丰盛,但惋惜diff的返回数据是纯文本,并不不便解决。利用之前写好的简略的diff格局的解析器,解决成可读的json数据。 ...

November 1, 2021 · 2 min · jiezi