目前基本使用三款js代码质量检查工具: jslint, jshint, eslint。许多IDE里面也有对应的检查插件,在每次ctrl + s 保存文件的时候,检查当前文件是否符合规范,保证代码质量。
许多团队都会指定一套代码规范code review,更加严格的检查每次代码修改。 也可以在git commit之前,检查代码,保证所有提交到版本库中的代码都是符合规范的,

在看vue源码时,不免修改代码,就会触发里面配置好的钩子函数。于是,仔细研究了一下vue配置方法,可以发现配置非常简单。

git 钩子文档上介绍非常详细,git init后,在.git/hooks文件中,有一些.simple结尾的钩子示例脚本,如果想启用对应的钩子函数,只需手动删除后缀。所以,列出两种配置方法:

1. 手动修改钩子文件

按照文档上,配置钩子脚本,修改hooks中文件名对应的钩子文件,启用钩子。使用shell脚本检查,可以参考vue1.x 里面如何使用

``` !/usr/bin/env bash

 # get files to be linted
FILES=$(git diff --cached --name-only | grep -E '^src|^test/unit/specs|^test/e2e')# lint them if any
if [[ $FILES ]]; then./node_modules/.bin/eslint $FILES
fi

```

文件名是pre-commit,在commit 之前启用的钩子函数, 利用 git diff查看当前有哪些文件修改过,只对指定文件夹中修改的文件使用eslint进行代码检查,渐进式对整个项目实现代码规范。

脚本写好后,不用每次都手动复制到.git/hooks目录下,只需对当前文件创建软连接,到指定目录,在package.json中配置脚本命令,

"scripts": { "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", }

在项目初始化后, 执行npm run install-hook,很方便地配置好了pre-commit 钩子

2. 利用yorkie or husky + lint-staged 构建钩子

在 vue最新的版本中,已经使用尤大改写的youkie, youkie实际是fork husky,然后做了一些定制化的改动, 使得钩子能从package.json的 "gitHooks"属性中读取,

  "gitHooks": {"pre-commit": "foo"}
}

使用方法跟husky 类似,可以查看husky 文档,介绍非常详细。

npm install husky --save-dev# or npm install yorkie --save-dev

安装完成后,可以发现已经改写了hooks 目录中的文件,只需在package.json 中配置对应钩子要执行的脚本。
husky 配置:


// package.json
{"husky": {"hooks": {"pre-commit": "npm test","pre-push": "npm test","...": "..."}}
}

回头看看,vue中如何配置


// package.json"gitHooks": {"pre-commit": "lint-staged","commit-msg": "node scripts/verify-commit-msg.js"}"lint-staged": {"*.js": ["eslint --fix","git add"]}

前面提到,利用git diff,只lint当前改动的文件,lint-staged就非常准确的解决了这一问题,从这个包名,就可以看出,Run linters on git staged files,只针对改动的文件进行处理。
结合husky一起使用,安装依赖:

npm install --save-dev lint-staged husky

修改package.json 文件


{
+ "husky": {
+   "hooks": {
+     "pre-commit": "lint-staged"
+   }
+ },
+ "lint-staged": {
+   "*.js": ["eslint --fix", "git add"]
+ }
}

使用了eslint,需要配置.eslintrc, lint-staged还有一个好处,可以在lint后,更加灵活,执行其他脚本,尝试进行修改错误,比如 eslint --fix 检查后并修复错误。

上面列出的vue 文件使用了类似的配置,另外增加了 commit-msg 钩子,对提交说明进行检查,在 scripts/verify-commit-msg.js文件中可以找到检查脚本,


const chalk = require('chalk')
const msgPath = process.env.GIT_PARAMS
const msg = require('fs').readFileSync(msgPath, 'utf-8').trim()const commitRE = /^(revert: )?(feat|fix|polish|docs|style|refactor|perf|test|workflow|ci|chore|types|build)(\(.+\))?: .{1,50}/if (!commitRE.test(msg)) {console.log()console.error(`  ${chalk.bgRed.white(' ERROR ')} ${chalk.red(`invalid commit message format.`)}\n\n` +chalk.red(`  Proper commit message format is required for automated changelog generation. Examples:\n\n`) +`    ${chalk.green(`feat(compiler): add 'comments' option`)}\n` +`    ${chalk.green(`fix(v-model): handle events on blur (close #28)`)}\n\n` +chalk.red(`  See .github/COMMIT_CONVENTION.md for more details.\n`) +chalk.red(`  You can also use ${chalk.cyan(`npm run commit`)} to interactively generate a commit message.\n`))process.exit(1)
}

利用process.env.GIT_PARAMS 找到目录,读取msg 说明,进行检查。

使用 husky 要注意,对应属性名已经改为HUSKY_GIT_PARAMS , 而不是原始的 GIT_PARAMS 环境变量。

原文地址:https://segmentfault.com/a/1190000016750078

转载于:https://www.cnblogs.com/lalalagq/p/9901099.html

pre-commit钩子,代码质量检查相关推荐

  1. git commit -m XX报错 pre -commit hook failed (add --no-verify to bypass)问题

    在同步本地文件到线上仓库的时候 报错 pre -commit hook failed (add --no-verify to bypass) 当你在终端输入git commit -m "xx ...

  2. 项目质量监测(一)——代码质量检查-书写风格、代码规范、高度耦合 代码质量监测之Js检验工具-JSLint、JSHint、ESLint

    项目质量监测(一)--代码质量检查-书写风格.代码规范.高度耦合 & 代码质量监测之Js检验工具-JSLint.JSHint.ESLint 5-2 项目质量监测 课程介绍 没有规矩不成方圆,所 ...

  3. github 检查代码质量_Android(8): 代码质量检查

    代码质量检查是持续性的工作,检查的两个基本工具是FindBugs和CheckStyle.在实际项目中,检查的工作由测试人员实施,开发人员进行配合,形成日常性的工作.每天会对最新的代码进行检查,使用脚本 ...

  4. android studio怎么回退,如何回滚已经commit的代码(Android Studio)

    01 项目开发中,时常会遇到这样一种情况,代码已经commit(非push)上去了,但此时发现有误,不想提交了,如何回滚? 这点对于新手git的开发者还是比较陌生的. 今天和大家分享这个知识点,如果你 ...

  5. 从日常代码质量检查工作中感受工作中的乐趣、生活的乐趣

    为什么80%的码农都做不了架构师?>>>    测试部经理找我谈话,觉得他自己的平时的工作太繁重.而且总是有很多低级的错误反复测试. 软件质量是软件项目.软件产品的根本,软件的编码质 ...

  6. (损人损己)做代码质量检查差事最易得罪人,大多是为公司干好事给自己树敌的差事...

    我总想把代码写好,结果: 1:自己创业时,看不惯同事写得代码质量不好,性能不高,复用程度低,挨个检查挨个批评,结果把所有的人都得罪光了,人都被挖走了. 2:在宁波打工,检查同事的代码,说人家这里不好哪 ...

  7. Golang代码质量检查工具GolangCI-Lint(学习笔记)

    Golang代码质量检查工具GolangCI-Lint 直接用下面go get的方式会出现报错 go get github.com/golangci/golangci-lint/cmd/golangc ...

  8. java代码质量检查工具

    Java代码质量检查工具及使用案例 在现在的软件开发中,由于软件的复杂度越来越高,业务也覆盖很广,各个业务模块业务错综复杂.这样就需要我们需要团队开发,在我们团队中开发人员的经验.代码风格样式都不一致 ...

  9. 前端项目如何使用sonar qube进行代码质量检查

    在做 Java 项目的时候,我们经常会使用 Sonar Qube来进行代码质量检查工作.查看了一下其文档,sonar qube不仅可以做Java的检查,还支持其他语言,比如js, ts等等. 本文简单 ...

  10. 常用java代码质量检查工具.md

    常用扫描工具 PMD-CPD :Copy/Paste Detector (CPD) 代码重复率检测 PMD:分析 Java 源代码,找出潜在的 bug Findbugs :Java bug检查 che ...

最新文章

  1. Maven(插件配置和生命周期的绑定)
  2. box-cox数据规整转换
  3. Arrays.asList详解
  4. 代码 抠图_憋再PS抠图了,3行代码给你安排的明明白白!
  5. 【C/C++】实型变量
  6. 数据库随机取n条记录
  7. sqlite 查询 支持多用户同时_SQLite支持多进程同时操作数据库文件吗?
  8. 提高数据库处理查询速度
  9. Velocity语法参考
  10. 从文件夹里面多个文件里面查找指定内容
  11. 质因数分解(0)P2012_1
  12. 【C语言】C语言读取文本文件
  13. Hamcrest匹配器框架
  14. 持久层框架有哪些?区别是什么?Mybatis框架的优点和缺点
  15. 利用Windows自带的Certutil查看文件MD5
  16. 什么是火星坐标系(GCJ-02)
  17. 微信商户支付平台微信支付怎么开通
  18. File system specific implementation of LookupAndOpen [file] failed
  19. 7.1 认识Access报表
  20. CC8编译报错:error #10099-D 解决方案(已解决)

热门文章

  1. linux下安装redis-cli
  2. ssh: connect to host port 22: Connection refused
  3. win10连接mq_Win10环境下配置RocketMQ
  4. 华为云该网站服务器错了,云服务器选错镜像版本
  5. go - range
  6. go语言及etcd环境搭建
  7. Java HotSpot(TM) 64-Bit Server VM warning: NewSize (1536k) is greater than the MaxNewSize (1024k)
  8. ef core 批量update 非id_Entity Framework (EF) Core
  9. 图虫知识共享协议_缘之好物 篇二十:关怀父母的另类方案----新礼物:2019图虫影像历...
  10. 简单计算器——两种方法