团队项目中,通常咱们会统一代码提交规范。这里简单介绍下使用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