安装 lint-staged和 husky
npm install --save-dev lint-staged husky
// 手动启用husky
npx husky install
会生成 .husky 文件夹
添加 .husky里面的pre-commit 文件
npx husky add .husky/pre-commit "npm run lint-staged"
在根目录添加 lint-staged.config.js
module.exports = {
"{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": [
"prettier --write--parser json",
],
"package.json": ["prettier --write"],
"*.md": ["prettier --write"],
"*.{js,jsx,ts,tsx}": ["prettier --write", "eslint --fix"],
"*.vue": ["prettier --write", "eslint --fix", "stylelint --fix"],
"*.{scss,less,styl,css,html}": ["prettier --write", "stylelint --fix"],
};
在packgae.json中添加prepare脚本
prepare脚本会在npm install(不带参数)之后自动执行。也就是说当我们执行npm install安装完项目依赖后会执行 husky install命令,该命令会创建.husky/目录并指定该目录为git hooks所在的目录。
再加上其他执行语句(eslint,prettier,stylelint) 这些要之前配置好
{
"scripts": {
"prepare": "husky install",
"lint-staged": "lint-staged",
"lint": "npm run lint:eslint && npm run lint:stylelint",
"lint:eslint": "eslint --fix --ext \"**/*.{vue,less,css,scss}\"",
"lint:prettier": "prettier --write --loglevel warn \"**/*.{js,json,tsx,css,less,scss,vue,html,md}\"",
"lint:stylelint": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
}
}
git commit -m “测试husky” 会启动钩子
这样会在代码提交前 检查代码切更具你的规则自动修复, 如果报错且修复失败会停止提交
git add .
git commit -m "测试husky"
git cz配置
// 全局安装 已经装过的可以不需要
npm install -g commitizen
// 如果已经有 package.json文件 就不需要运行这句
npm init --yes
// 这句命令会自动帮你在项目安装cz-conventional-changelog包,并且帮你在package.son利进行配置
commitizen init cz-conventional-changelog --save --save-exact
安装完成会在packgae.json中出现如下语句
测试安装效果
git cz
快速更新提交
在packgae.json中添加
"scripts": {
"up": "git pull && git add -A && git-cz && git push"
},
npm run up