当前位置: 首页 > Web前端 > vue.js

编码规范,代码提交规范husky+lint-staged+commitlint

时间:2023-04-01 10:45:57 vue.js

背书全家桶介绍husky是一个给git客户端添加hooks的工具。安装后会自动在仓库的.git/目录下添加相应的钩子;例如,执行gitcommit时会触发pre-commit钩子。我们可以在pre-commit中实现lint检查、单元测试、代码美化等操作。当然pre-commit阶段执行的命令一定要保证它的速度不能太慢,每次commit都要等很长时间的体验是不好的。lint-staged,一个只过滤掉Git代码暂存区文件(git添加的文件)的工具;这个很实用,因为如果我们检查整个项目的代码,可能会花很长时间,如果是老项目,如果要做代码规范检查修改之前的代码,可能会比较麻烦,这可能会导致项目发生很大的变化。所以这个lint-staged是团队项目和开源项目的好工具。它是对个人提交的代码的规范和约束。新版husky的工作原理新版husky从git2.9开始引入了一个新函数core.hooksPath。core.hooksPath允许你指定githooks所在的目录,而不是使用默认的.git/hooks/,这样husky就可以使用huskyinstall到githooks的目录指定为.husky/,然后使用husky添加命令以将挂钩添加到.husky/。这样我们就可以只添加我们需要的githooks,所有的脚本都存放在一个地方(.husky/目录),就不存在同步文件的问题了。新版husky+lint-staged实践1.安装huskynpmihusky--save-dev2.在package.json中添加preparescript{"scripts":{"prepare":"huskyinstall"}}3.执行preparescriptnpmrunprepare执行huskyinstall命令,会创建.husky/目录,并指定该目录为githooks所在目录。4、添加githooks,运行命令创建githooksnpxhuskyadd.husky/pre-commit"npmrunlint"运行这条命令后,我们会在.husky/目录脚本中看到一个名为pre-commit的新shell。也就是说,在执行gitcommit命令时,pre-commit脚本会先被执行。预提交脚本内容如下:#!/bin/sh。"$(dirname"$0")/_/husky.sh"npmrunlint这个脚本的作用是执行命令npmrunlint5.添加commit-msg脚本npxhuskyadd.husky/commit-msg'npx--no-installcommitlint--edit"$1"'commit-msg脚本内容如下:#!/bin/sh"$(dirname"$0")/_/husky.sh"npx--no-installcommitlint--edit"$1"6.安装lint-stagednpmilint-staged--save-dev7.在package.json文件中配置lint命令{"scripts":{"lint":"lint-上演”,}}8。在package.json中配置lint或在根目录中创建.lintstagedrc或lint-staged.config.js或lint-staged.config.js文件的命令从v3.1开始,您现在可以通过不同的方式配置lint-staged:lint-stagedinyourobjectpackage.json.lintstagedrcJSON或YML格式文件lint-staged.config.jsJS格式文件使用--config或-cjson文件:{"src/**/*.{js.vue}":["prettier--write","esslint--cache--fix","gitadd"]}示例:配置“usestrict”在lint-staged.config.js文件中;module.exports={ignore:["package-lock.json","CHANGELOG.md"],linters:{"*.ts":["prettier--write","eslint--fix","gitadd"],"*.js":["prettier--write","eslint--cache--fix","gitadd"],"*.vue":["prettier--write","eslint--cache--fix","gitadd"],"*.{json,md,yml,css}":["prettier--write","gitadd"]}commit前做代码检查和美化代码,然后添加到暂存区;然后commit9.自定义提交规范,安装npminstall--save-dev@commitlint/config-conventional@commitlint/cli//生成配置文件commitlint.config.js,当然也是可能yes.commitlintrc.jsecho"module.exports={extends:['@commitlint/config-conventional']};">commitlint.config.js自定义提交格式:常用类型分类upd:updateacertainFunction(notfeat,notfix)feat:newfeature(特性)fix:patchbugdocs:documentation(文档)style:format(不影响代码运行的改变)refactor:重构(不是新特性,也不是bug修复)代码更改)测试:增加测试琐事:b中的更改uild进程或辅助工具示例:gitcommit-m'feat:addxxxfunction'gitcommit-m'bug:fixxxxfunction'commitlint.config.js文件配置规则按名称和配置数组,如:'name:[0,'always',72]',数组第一位为级别,可选0,1,2,0为禁用,1为警告,2为错误,第二位为是否应用,always|never是可选的,第三位是规则的值具体配置示例如下:module.exports={extends:["@commitlint/config-conventional"],rules:{'type-enum':[2,'always',['upd','feat','fix','refactor','docs','chore','style','revert']],'type-case':[0],'type-empty':[0],'scope-empty':[0],'scope-case':[0],'subject-full-stop':[0,'never'],'subject-case':[0,'never'],'header-最大长度':[0,'总是',72]}};10。安装eslint和prettier相关的代码格式化和校验插件,在项目根目录下配置eslint和prettier规则,git提交校验后的代码就可以执行代码了。示例:正确的提交示例:不正确的提交

猜你喜欢