面试官:你们部门对代码规范有什么具体的要求吗?我:没要求...

523 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

大家好,我是一泽,每一个优秀的前端团队都应该制定一套合适的代码规范,让团队每一个成员去遵循

那么要怎么起步呢

  • 首先我们需要自行了解一下 husky+commitlintlint-stagedprettier-eslint 分别是干什么的
  • 这里特别说明一下lint-staged的意义:在代码提交之前,进行代码规则检查能够确保进入git库的代码都是符合代码规则的。但是整个项目上运行lint速度会很慢,lint-staged能够让lint只检测暂存区的文件,所以速度很快
  • 当然也可以不用 prettier-eslint ,用其他的格式化工具去配置也 OK,我这里以 prettier-eslint 为例
  • 了解完以后,我们需要安装以上三个东西,因为这三个只是开发环境的依赖,所以要用--save-dev
// npm
npm i @commitlint/{cli,config-conventional} -D
npm i husky@4.3.8 -D  //建议安装V4这个版本最稳定,无报错!
npm i lint-staged -D
npm i prettier-eslint -D

// yarn
yarn add @commitlint/{cli,config-conventional} -D
yarn add husky@4.3.8 -D
yarn add lint-staged -D
yarn add prettier-eslint -D
  • 当然还有一种懒人版安装方法,你直接在你的 package.json 文件里 devDependencies 开发依赖里面加入以下代码后,直接npm i 或者 yarn我这里的依赖版本可能会有点旧了,但也能用!
"@commitlint/cli": "^17.1.2",
"@commitlint/config-conventional": "^17.1.0",
"prettier-eslint": "^12.0.0",
"prettier-eslint-cli": "^5.0.0",
"husky": "^4.3.8",
"lint-staged": "^10.2.11",

接下来这样配置,贼稳!

  • package.json 文件里添加配置信息
"lint-staged": {
        "**/*.{js,jsx,mjs,ts,tsx}": [
            "node_modules/.bin/prettier-eslint --write"  //这里你可能安装的不是prettier-eslint,需要根据你自己的格式化工具来写
        ], //jsx、tsx针对React项目
        "**/*.{vue,html}": [
            "prettier-eslint --write",
            "stylelint --fix --allow-empty-input"
        ],   //这个Vue项目才用
        "src/**/*.{css,scss,less,html,md,markdown,json}": [
            "node_modules/.bin/prettier-eslint --write"
        ]
    },
    "husky": {
        "hooks": {
            "pre-commit": "lint-staged",
            "commit-msg": "commitlint -e"
        }
    }
  • 在根目录下创建一个commitlint.config.js文件,也可以是commitlintrc.js, 在文件里添加配置信息
//demo
module.exports = {
  extends: ["@commitlint/config-conventional"],
  rules: {
    "subject-case": [0], //0 表示关闭规则,1表示将该规则转换为警告,2表示将该规则转换为错误
    "type-enum": [
      2,
      "always",
      [
        "build", // webpack 构建
        "ci", // ci 构建
        "chore", // 其他修改(日常事务), 比如改变构建流程、或者增加依赖库、工具等
        "docs", // 文档
        "feat", // 添加新功能、新特性
        "fix", // 修复 bug
        "perf", // 优化性能
        "refactor", //代码重构
        "revert", // 代码回退
        "style", // 修改样式
        "test", // 测试代码
        "balabala", //自定义type
      ],
    ],
  },
};

最后动手检测一下

  • 没写或者没写对commitlint.config.js文件规定的commit类型,用了中文的冒号或者冒号后面不加空格,都会报错

image.png

image.png

image.png

image.png image.png

  • 正确的写法,当然这里是没限制字符长度,如果限制了最少字符长度就不一定了

image.png