前端规范之代码格式规范

1,709 阅读4分钟

介绍:

代码格式规范在多人协作项目中的作用不言而喻。主要手段是通过工具去管理,有以下两方面:

  1. 编码阶段,保存自动格式化代码。
  1. 提交阶段,git commit之前对暂存区的文件进行代码格式修复和检查。

主要用到 prettier, eslint, husky, lint-staged

格式化配置

Prettier vs Eslint

参见:prettier.io/docs/en/com…

Linters(ESLint/TSLint/stylelint, etc.)有两种类型的规则。

一类是代码格式规则(Formatting rules),例如:max-len, no-mixed-spaces-and-tabs, keyword-spacing, comma-style…。

另外一类是代码质量规则(Code-quality rules),例如:no-unused-vars, no-extra-bind, no-implicit-globals, prefer-promise-reject-errors…。代码bug只跟这类规则可能有关。

Prettier只有第一类代码格式规则(Formatting rules)。

既然Eslint就具备了两个规则功能,为什么还要用Prettier?

因为Prettier专注代码格式化,相比Eslint更擅长格式化代码,更加的快速(支持更多文件类型?)。并且Eslint不支持某些相对复杂的代码格式化场景,比如一行超过n个字符换行等,而prettier可以办到。

总而言之,use Prettier for formatting and linters for catching bugs!

prettier

参见:prettier.io/docs/en/ins…

  1. 安装

npm install --save-dev --save-exact prettier

  1. 新建配置文件,让vscode知道你正在使用Prettier

echo {}> .prettierrc.json

  1. vscode安装prettier插件

Eslint

  1. 安装

npm install eslint --save-dev

  1. 新建配置文件

npm init @eslint/config

  1. vscode安装eslint插件
  1. eslint的格式化规则和prettier规则存在冲突。官方解决方案是使用eslint-config-prettier关闭eslint与prettier冲突的格式规则。格式规则以prettier为准,并让eslint集成prettier的规则eslint-plugin-prettier

4.1 安装

`npm install --save-dev eslint-config-prettier`

`npm install --save-dev eslint-plugin-prettier`

只需要在eslint配置文件添加即可应用

{

"extends": ["plugin:prettier/recommended"]

}

至此,格式化插件安装完毕。开启编辑器修改代码自动保存,保存时会格式化代码。通过修改配置文件,可自定义配置规则以符合团队风格。初次使用,可通过命令行格式化所有文件:`npx prettier --write ./` `npx eslint --fix`

提交格式化处理和校验

为了防止未经格式化正确的代码上传到代码仓库造成污染,在git hook 提交代码钩子执行脚本命令,对暂存区代码做检查。存在不符合规范且不能自动修复的,提交失败。主要用到lint-staged和husky。

Husky

参见:github.com/typicode/hu…

husky让我们可以在想要的git hook下做一些事情。

安装参见上述官方文档链接。这里我们需要在提交代码前进行格式校验。那么需要监听的钩子是pre-commit:`npx husky add .husky/pre-commit "npx lint-staged"` 。在commit前会执行npx lint-staged 脚本命令。如果抛出错误,提交将会失败,反正提交成功。lint-staged是干嘛用的,下面马上介绍。

Lint-staged

参见:github.com/okonet/lint…

lint-staged是什么?官方描述:

Run linters against staged git files and don't let 💩 slip into your code base!

翻译一下:对git暂存的文件,用linters工具去处理,防止💩一样的代码进入你的代码仓库。

重点1,只会处理git暂存的文件,不会处理所有文件,一般是挺快的,否则提交校验耗时就太长了。了。重点2,需要用linters相关工具配合。

lint-staged守住了最后一道防线。虽然有了vscode自动保存格式化代码,但是有些同学可能觉得代码规则校验繁琐,将插件关闭,提交未经格式化校验的代码。

  1. 安装,参见上面官方文档链接。
  1. 在项目package.json添加配置
"lint-staged": {

    "*.{js,jsx,ts,tsx}": [

        "prettier --write",`

        "eslint --fix"

    ],

    "*.{html,less,css,scss}": [

        "prettier --write"

    ]

}

在提交代码前,会对所有的.js{x},.ts{x}文件执行`prettier --write和eslint --fix` 。先用pretter进行代码格式修复,再用eslint对代码质量规则修复。但是eslint不是所有不符合规则的错误都能自动修复,最终eslint --fix会返回是否还有规则错误的结果。如果没有,则顺利提交通过。如果有,终止代码提交。

总结:

以上就是目前所了解到的代码格式规范配置相关的内容。可能有一些错误和理解不准确,了解到更多后再完善。