hasky是一款前端工程化的插件,使用的是git钩子,也就是在git执行的相关生命周期做一些工作
比如eslint这样格式校正工作
本次是第一次使用,记录一下相关流程
一、简单的安装和初始化
这个部分因为要适用于我的win7系统旧电脑,所以要写的详细一些,hasky有些操作在操作系统上有差异
1.下载husky包
npm install husky --save-dev
2.初始化
初始化阶段就体现出一些差别了
npx husky install
初始化husky,这里的话如果你的文件没有开启git会出现一些问题,毕竟husky是依赖git操作的
二、添加钩子和正式使用
1.添加第一个钩子
这里不采用官网的方式添加,即如下的方式
npx husky add .husky/pre-commit "npm test"
该命令的意思就是husky配置文件下创建pre-commit钩子(明显是提交之前的钩子),钩子当中执行的内容是npm test,但是我的电脑似乎不能解析,所以我采用的是这样的方式
npx husky add .husky/pre-commit
这样的话只创建钩子,但是里面的执行的内容需要你自己去写,我这里的内容就写成
这个lint指令对应的其实是package.json中的这段指令
"lint": "eslint src",
也就是eslint不加上fix的内容,至于为什么不fix我后面再说
2.第一次提交
我们将相关内容add之后进行commit,你会发现界面出现了这个命令
很明显执行了eslint指令,并且发现了格式不合适,那这个报错是否影响了这次的commit呢,我们看一下提交记录
也就是钩子中运行的命令就不提交
3.处理和补救
那我们就使用eslintfix一下,然后add然后再提交,我这边eslintfix是一个单独的npm指令
"lint:fix": "eslint src --fix"
千万不要忘记add,因为fix是造成改动的,之后commit就完美了。
三、为什么在husky之中不配置eslint --fix
我觉得这是一个非常重要的问题。因为在eslint fix之后,只要这个fix地过程是顺畅的,不产生任何错误,那么此次提交就直接提交了,而你fix之后的那些新改动因为没有进行git add .因此在这一次的commit之中是不包含的,也就是说你要再一次commit这些改动的行为,当然你也可以使用npm命令完整实现这些行为,比如将上面npm中的lint指令改成如下的条目
"lint": "eslint src --fix&&git add .",
当然我看了一些文章,大部分都是在husky中执行commit message的纠正,但从容错上来说,我认为eslint的行为还是放在commit之前手动操作比较好。