前端代码规范配置

  • Post author:
  • Post category:其他




前端代码规范配置

涉及到了


eslint





prettier




husky



lint-staged

等工具包的使用。



代码规则校验

使用

eslint

定义代码风格

安装

eslint

并在

.eslintrc.js

文件中配置。

npm i eslint -D

这个代码风格可以使用公司团队内的规范,如果没有可以在


github


中找到一些主流的规则,比如说

eslint-config-google

或者

eslint-config-alloy

这里使用

eslint-config-alloy

(需要通过

npm

引入)

module.exports = {
  extends: [
    'alloy'
  ]
}

虽然配置了

eslint

但是每次都需要手动执行

eslint xxx

命令去校验代码中是否存在错误、不规范的写法。如果使用

vscode

这个编辑器的话可以直接安装

Eslint

这个插件,这样在编写代码的时候就会实时监测代码中存在的异常并标红,不需要执行

eslint xxx

命令。



自动格式化


prettier

是一个代码格式化工具,可以通过自定义规则来重新规范项目中的代码,去掉原始的代码风格,确保团队的代码使用统一相同的格式。

安装

prettier

并在

.prettierrc.js

文件中进行配置。

npm i prettier -D

具体配置看团队,以下仅为示例:

module.exports = {
  useTabs: true,
	tabWidth: 2,
	printWidth: 80,
	trailingComma: 'all'
}

配置好后执行

npx prettier --check .

可以查看当前所有文件是否符合配置,执行

npx prettier --write .

则可以直接在原文件上格式化。在

vscode

上也存在

prettier

插件,安装后在保存文件的时候就会根据根目录下的

.prettierrc.js

配置自动执行

prettier

进行格式化。



解决prettier和eslint冲突

在代码格式化时采用

Perttier

规则,而我们代码校验使用的是

ESLint

,如果同一个规则配置不一致,往往就会出现冲突问题;

安装

eslint-config-prettier

插件配置集,把其配置到

.eslintrc.*

规则的尾部。执行

ESLint

命令,会禁用那些和

Prettier

配置有冲突的规则。

安装

eslint-plugin-prettier

插件,先使用

Prettier

对代码进行格式化,再并对不一致的地方进行标记;

这两个包配合使用,可以达到运行

eslint --fix

时,采用

Prettier

的配置规则来格式化文件。


.eslintrc.js

文件最终变成:

module.exports = {
  plugins: ["prettier"],
  extends: ["alloy", "plugin:prettier/recommended"],
};



提交校验

虽然通过

eslint



prettier

可以控制代码风格,但是配置依旧容易被篡改,这个时候需要做一些防范措施。



在提交代码时校验代码

安装

husky



lint-staged

,可以在提交代码的时候校验暂存区里的代码,只有通过校验的代码才允许提交,通过还可以规范

commit

的注释。

安装:

cnpm i husky lint-staged -D

执行

npx husky install

创建

.husky

目录并指定该目录为

git hooks

所在的目录。

添加


git hooks




husky

支持

git

的所有钩子,示例只使用

pre-commit



commit-msg

创建

pre-commit

钩子

npx husky add .husky/pre-commit "npx lint-staged"
npx husky add .husky/commit-msg "npx --no-install commitlint --edit "$1""

可以看到

.husky

目录下生成

commit-msg



pre-commit

两个文件。

在这里插入图片描述

在这两个文件中都只是配置了一个指令,比如说

pre-commit

就是一个

npx lint-staged

用于检查暂存区的文件。



package.json

中配置

lint-staged

{
  "lint-staged": {
    "*.js": [
      "prettier --write ."
      "eslint --cache"
    ]
  },
}



校验commit



commit-msg

这里可以自定义一套

git

提交规范(比如说

vuejs/core

),也可以使用

commitlint


vuejs/core

的代码提交规范:

import chalk from 'chalk'
import { readFileSync } from 'fs'
import path from 'path'

const msgPath = path.resolve('.git/COMMIT_EDITMSG')
const msg = readFileSync(msgPath, 'utf-8').trim()

const commitRE =
  /^(revert: )?(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(\(.+\))?: .{1,50}/

if (!commitRE.test(msg)) {
  console.log()
  console.error(
    `  ${chalk.bgRed.white(' ERROR ')} ${chalk.red(
      `invalid commit message format.`
    )}\n\n` +
      chalk.red(
        `  Proper commit message format is required for automated changelog generation. Examples:\n\n`
      ) +
      `    ${chalk.green(`feat(compiler): add 'comments' option`)}\n` +
      `    ${chalk.green(
        `fix(v-model): handle events on blur (close #28)`
      )}\n\n` +
      chalk.red(`  See .github/commit-convention.md for more details.\n`)
  )
  process.exit(1)
}



使用commitlint

安装

npm install -D @commitlint/cli @commitlint/config-conventional

新建

commitlint.config.js

以下是示例,可以自行配置

module.exports = {
  extends: ["@commitlint/config-conventional"],
  rules: {
    "type-enum": [
      2,
      "always",
      [
        "feat",
        "fix",
        "style",
        "refactor",
        "perf",
        "test",
        "build",
        "chore",
        "revert",
      ],
    ],
    "subject-max-length": [1, "always", 150],
  },
};



版权声明:本文为qq_42880714原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。