Vue2.7 + Vite+ Eslint、Stylelint、Commitlint 统一开发规范
+ husky + lint-staged (git commit 时自动格式化代码)
+ Vue 全家桶集成
+ Axios 封装及接口管理
https://juejin.cn/post/7118700020911570974
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
4.4 KiB
159 lines
4.4 KiB
2 years ago
|
# Eslint 代码格式化
|
||
|
|
||
|
在工作中,一个项目往往是很多人共同开发,因为每个人的编码习惯都不一样,就会增加后期维护成本。
|
||
|
|
||
|
为了解决这个问题,我们一般会定义一个开发规范文档,使用约定的方式来统一项目的编码规范。
|
||
|
|
||
|
有了规范文档之后,我们就会在开发中小心翼翼的调整代码风格,每行、每列、每个双引号。这样无疑也会影响开发效率,而且忙的时候可能还会忘记某些规范条例。
|
||
|
|
||
|
为了更好的统一团队的编码规范,在这里我使用了 EditorConfig + ESLint + Prettier 这些工具来辅助解决规范性问题。
|
||
|
|
||
|
## EditorConfig
|
||
|
|
||
|
[EditorConfig](https://editorconfig.org/) 主要用于统一不同 IDE 编辑器的编码风格。
|
||
|
|
||
|
> 当然每个团队最好还是统一一个代码编辑器。
|
||
|
|
||
|
在根目录下添加 `.editorconfig` 文件:
|
||
|
|
||
|
```plain
|
||
|
# EditorConfig is awesome: https://EditorConfig.org
|
||
|
|
||
|
# top-most EditorConfig file
|
||
|
root = true
|
||
|
|
||
|
[*]
|
||
|
indent_style = space
|
||
|
indent_size = 2
|
||
|
end_of_line = lf
|
||
|
charset = utf-8
|
||
|
trim_trailing_whitespace = false
|
||
|
insert_final_newline = false
|
||
|
```
|
||
|
|
||
|
> 很多 IDE 中会默认支持此配置,但是也有些不支持,如:VSCode、Atom、Sublime Text 等。
|
||
|
>
|
||
|
> 具体列表可以参考官网,如果在 VSCode 中使用需要安装 `EditorConfig for VS Code` 插件。
|
||
|
|
||
|
## ESLint
|
||
|
|
||
|
[ESLint](http://eslint.cn/) 是针对 EScript 的一款代码检测工具,它可以检测项目中编写不规范的代码,如果写出不符合规范的代码会被警告。
|
||
|
|
||
|
由此我们就可以借助于 ESLint 强大的功能来统一团队的编码规范。
|
||
|
|
||
|
1. 安装依赖
|
||
|
|
||
|
- [`eslint`](https://github.com/eslint/eslint) - Eslint 本体
|
||
|
- [`eslint-define-config`](https://github.com/Shinigami92/eslint-define-config)- 改善 ESLint 规范编写体验
|
||
|
- [`eslint-plugin-vue`](https://github.com/vuejs/eslint-plugin-vue)- 适用于 Vue 文件的 ESLint 插件
|
||
|
- `vue-eslint-parser`- 使用 `eslint-plugin-vue` 时必须安装的 eslint 解析器
|
||
|
|
||
|
```bash
|
||
|
pnpm add eslint eslint-define-config eslint-plugin-vue vue-eslint-parser -D
|
||
|
```
|
||
|
|
||
|
2. 添加 ESLint 配置文件
|
||
|
|
||
|
在根目录添加一个 `.eslintrc.js` 文件,内容如下:
|
||
|
|
||
|
```javascript
|
||
|
const { defineConfig } = require('eslint-define-config')
|
||
|
|
||
|
module.exports = defineConfig({
|
||
|
root: true,
|
||
|
env: {
|
||
|
browser: true,
|
||
|
node: true,
|
||
|
es6: true
|
||
|
},
|
||
|
parser: 'vue-eslint-parser',
|
||
|
parserOptions: {
|
||
|
ecmaFeatures: {
|
||
|
jsx: true
|
||
|
}
|
||
|
},
|
||
|
extends: [
|
||
|
/**
|
||
|
* 继承 eslint-plugin-vue 插件的规则
|
||
|
* @link https://eslint.vuejs.org/user-guide/#installation
|
||
|
*/
|
||
|
'plugin:vue/recommended'
|
||
|
],
|
||
|
rules: {
|
||
|
'vue/multi-word-component-names': 'off'
|
||
|
}
|
||
|
})
|
||
|
```
|
||
|
|
||
|
> 关于配置文件中的选项大家去看[官方文档](http://eslint.cn/docs/user-guide/configuring),已经写得很详细了。
|
||
|
|
||
|
3. 添加 ESLint 过滤规则
|
||
|
|
||
|
在根目录添加一个 `.eslintignore` 文件,内容如下:
|
||
|
|
||
|
```plain
|
||
|
public
|
||
|
dist
|
||
|
```
|
||
|
|
||
|
## Prettier
|
||
|
|
||
|
Prettier 是一款强大的代码格式化工具,这里我们使用 ESLint + Prettier 来格式化代码。
|
||
|
|
||
|
1. 安装依赖
|
||
|
|
||
|
- `prettier` - prettier 本体
|
||
|
- `eslint-config-prettier` - 关闭 ESLint 中与 Prettier 中发生冲突的规则
|
||
|
- `eslint-plugin-prettier` - 将 Prettier 的规则设置到 ESLint 的规则中
|
||
|
|
||
|
```bash
|
||
|
pnpm add prettier eslint-config-prettier eslint-plugin-prettier -D
|
||
|
```
|
||
|
|
||
|
2. 添加 Prettier 配置文件
|
||
|
|
||
|
在根目录添加一个 `.prettierrc.js` 文件,内容如下:
|
||
|
|
||
|
```javascript
|
||
|
module.exports = {
|
||
|
semi: false,
|
||
|
singleQuote: true,
|
||
|
printWidth: 80,
|
||
|
trailingComma: 'none',
|
||
|
arrowParens: 'avoid',
|
||
|
}
|
||
|
```
|
||
|
|
||
|
3. 修改 ESLint 配置,使 Eslint 兼容 Prettier 规则
|
||
|
|
||
|
```javascript
|
||
|
const { defineConfig } = require('eslint-define-config')
|
||
|
|
||
|
module.exports = defineConfig({
|
||
|
/// ...
|
||
|
extends: [
|
||
|
'plugin:vue/vue3-recommended',
|
||
|
/**
|
||
|
* 继承 eslint-plugin-prettier 插件的规则
|
||
|
* @link https://github.com/prettier/eslint-plugin-prettier
|
||
|
*/
|
||
|
'plugin:prettier/recommended'
|
||
|
],
|
||
|
// ...
|
||
|
})
|
||
|
```
|
||
|
|
||
|
## 自动格式化代码
|
||
|
|
||
|
做好以上配置之后,在编码时不符合规范的地方就会被编辑器标注出来,可以使我们更好的发现问题。
|
||
|
|
||
|
如果你用的是VScode,还可以工作区配置中,添加如下代码,之后就可以享受保存时自动格式化的功能了:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"editor.codeActionsOnSave": {
|
||
|
"source.fixAll": true,
|
||
|
"source.fixAll.eslint": true
|
||
|
}
|
||
|
}
|
||
|
```
|