团队项目中,通常咱们会统一代码提交规范。这里简单介绍下使用git钩子插件来规范化提交代码。vue
在git中,每次执行git commit, git push等操做时,会触发一个或多个shell脚本,这些脚本称为钩子,存放在 .git/hooks 目录下。钩子分为前置钩子和后置钩子,前置钩子为git命令调用前执行,后置钩子为git命令完成后执行。node
因此在git命令提交时,咱们能够额外作一些事情,好比提交前的代码检测,提交后的部署等功能。下面咱们借助插件来实现代码提交前的commit信息校验,代码格式化,代码检测等功能。git
首先安装husky, pretty-quick,lint-staged,commitlint, eslint插件。shell
cnpm i husky pretty-quick lint-staged commitlint eslint --save-dev
复制代码
修改package.json配置,设置lint-staged和husky。npm
"lint-staged": { "linters": { "**/*.{js,vue}": [ "eslint --fix", "git add" ] } } 复制代码
"husky": { "hooks": { "pre-commit": "pretty-quick --staged && lint-staged", "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" } } 复制代码
下面的配置文件仅供参考。json
// prettier.config.js module.exports = { printWidth: 120, //一行的字符数,若是超过会进行换行,默认为80 tabWidth: 2, //一个tab表明几个空格数,默认为80 useTabs: false, //是否使用tab进行缩进,默认为false,表示用空格进行缩减 singleQuote: true, //字符串是否使用单引号,默认为false,使用双引号 semi: true, //行位是否使用分号,默认为true }; 复制代码
// commitlint.config.js module.exports = { rules: { 'type-enum': [ 2, 'always', [ 'build', 'ci', 'chore', 'merge', 'docs', 'feat', 'fix', 'test' ] ], 'body-leading-blank': [1, 'always'], 'footer-leading-blank': [1, 'always'], } }; 复制代码
// .eslintrc.js module.exports = { root: true, env: { node: true }, extends: ['plugin:vue/essential', '@vue/prettier'], rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', quotes: [1, 'single'], 'vue/no-parsing-error': [2, { 'x-invalid-end-tag': false }] }, parserOptions: { parser: 'babel-eslint' } }; 复制代码
参考地址: www.jianshu.com/p/dc55ddd6c…bash