规范代码提交 husky + lint-staged + prettier + commitlint

295 阅读1分钟

Demo代码:github.com/zhounie/hus…

husky:https://typicode.github.io/husky/#/?id=features
lint-staged: https://github.com/okonet/lint-staged
prettier: https://prettier.io/
commitlint: https://github.com/conventional-changelog/commitlint

husky

husky作用是替换git的hooks,做到在执行git方法前做拦截,来执行我们要的操作;

使用方法
  1. 安装
npm i husky -D
  1. 创建.huskyrc文件
.huskyrc
{
    "hooks": {
        "pre-commit": "lint-staged", // 提交commit前的钩子
    },
}

上面pre-commit钩子会在commit提交前执行前执行lint-staged命令。

lint-staged

lint-staged作用是可以做到对git缓存区的代码(git add .) 进行独立处理。比如对我们要提交的代码进行eslint,而不是对全局代码校验。

使用方法
  1. 安装
npm i lint-staged -D
  1. 创建 .lintstagedrc
.lintstagedrc
{
  "*.{ts,js,vue,less}": "prettier --write"
}

上面规则是对git缓存区的文件进行代码格式规范化。

prettier

prettier代码风格美化工具

使用方法
  1. 安装
npm i prettier -D
  1. 创建.prettierrc
.prettierrc文件配置美化规则
{
  "singleQuote": true,
  "semi": true,
  "bracketSpacing": true,
  "tabWidth": 2,
  "useTabs": false,
  "htmlWhitespaceSensitivity": "strict",
  "trailingComma": "none"
}
  1. 创建 .prettierignore
.prettierignore 配置不需要美化的文件规则
**/*.html
**/*.txt
**/*.md
**/*.svg
**/*.ttf
**/*.woff
**/*.eot
package.json
lib/plugin/cli/site/doc/page
lib/plugin/cli/site/doc/view
node_modules

commitlint

作用:规范commit提交的msg,拦截不符合规范的msg。

使用
  1. 安装
npm install @commitlint/cli @commitlint/config-conventional -D
  1. 创建文件 commitlint.config.js
module.exports = {
  extends: ['@commitlint/config-conventional']
};
  1. 在.huskyrc文件中添加commit-msg钩子:
{
    "hooks": {
        "pre-commit": "lint-staged",
        "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
}