# PrettierEslint
**Repository Path**: guojiale_qd/PrettierEslint
## Basic Information
- **Project Name**: PrettierEslint
- **Description**: Prettier && Eslint
团队配置个性化 ESLint 规则的最佳标准或参考。
- **Primary Language**: JavaScript
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2020-08-14
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 项目介绍
#### 项目网址:
网址请戳这里
#### 问题:
想在团队中推行一定的代码规范,并给不符合规范的代码做检测和提示,多IDE工具能统一支持。
#### 方案:
代码规范校验使用 ESLint,但是一开始 ESLint 只有检测告诉你哪里有问题,常常出现的情况就是一堆 warning,改起来很痛苦。后来 ESLint 提供了 `eslint --fix --ext .js,.vue src --cache` 的命令可以自动帮你修复一些不符合规范的代码。Prettier 是一个代码格式化工具,可以帮你把代码格式化成可读性更好的格式,最典型的就是一行代码过长的问题。
#### Eslint和Prettier区别:
那 ESLint 和 Prettier 的区别是什么呢?eslint(包括其他一些 lint 工具)的主要功能包含代码格式的校验,代码质量的校验。而 Prettier 只是代码格式的校验(并格式化代码),不会对代码质量进行校验。代码格式问题通常指的是:单行代码长度、tab长度、空格、逗号表达式等问题。而代码质量问题指的是:未使用变量、三等号、全局变量声明等问题。
#### Eslint和Prettier配合使用:
为什么要两者配合使用?因为,第一在 ESLint 推出 --fix 参数前,ESLint 并没有自动化格式代码的功能,要对一些格式问题做批量格式化只能用 Prettier 这样的工具。第二 ESLint 的规则并不能完全包含 Prettier 的规则,两者不是简单的谁替代谁的问题。但是在 ESLint 推出 --fix 命令行参数之后,如果你觉得 ESLint 提供的格式化代码够用了,也可以不使用 Prettier。
ESLint 和 Prettier 相互合作的时候有一些问题,对于他们交集的部分规则,ESLint 和 Prettier 格式化后的代码格式不一致。导致的问题是:当你用 Prettier 格式化代码后再用 ESLint 去检测,会出现一些因为格式化导致的 warning,鉴于以上问题,本项目采用方案是:
1. 引入 `Prettier` 作为 `Eslint` 插件先格式化一把,同时关闭所有提示问题。
2. 运行 Prettier 之后,再使用 `eslint —fix` 格式化一把,这样把冲突的部分以 ESLint 的格式为标准覆盖掉,剩下的 warning 就都是代码质量问题了。
注:引入 `vue.js` 风格指南中 [优先级 C:推荐](https://cn.vuejs.org/v2/style-guide/index.html#优先级-C:推荐) 标准。
#### 优势:
1. 不接入 `webpack` 的 `eslint-loader` ,这样不会因为书写问题打断开发。
2. IDE工具支持提示校验,配合保存或IDE的 `eslint --fix` 直接快速辅助修复问题。
## 使用安装
**项目扩展包:**
```bash
yarn add babel-eslint \
eslint \
eslint-config-prettier \
eslint-plugin-prettier-vue \
eslint-plugin-vue \
prettier \
vue-eslint-parser -D
# 或
cnpm install babel-eslint eslint eslint-config-prettier eslint-plugin-prettier-vue eslint-plugin-vue prettier vue-eslint-parser -D
```
**版本参考:**
```json
{
"babel-eslint": "^10.1.0",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.10.1",
"eslint-plugin-prettier-vue": "^2.0.2",
"eslint-plugin-vue": "^6.2.2",
"prettier": "^2.0.4",
"vue-eslint-parser": "^7.0.0"
}
```
**下载:**
`eslintrc-vue.js`
拷贝 `js` 文件到项目根目录,重命令为 `.eslintrc.js` 的隐藏文件。
```bash
unzip ~/Downloads/eslintrc.js.zip
mv -i ~/Downloads/dist/eslintrc-vue.js ~/{yourProject}/.eslintrc.js
```
## package.json
配置项目 `检测脚本` 及 `修复脚本`。
会对src项目下所有 `.js` `.vue` 的扩展类进行格式化及检查。
```json
"scripts": {
"lint": "eslint --ext .js,.vue src",
"lint-fix": "eslint --fix --ext .js,.vue src --cache"
}
```
如果有第三个库类不需要处理可以根目录加入 `.eslintignore` 过行过滤
```ignore
node_modules/*
```
## vscode
`.vscode/settings.json` 文件配置。
```js
{
// 启用eslint
"eslint.enable": true,
// 禁用源校验
"javascript.validate.enable": false,
// 禁用vetur格式化功能及校验
"vetur.format.enable": false,
"vetur.validation.template": false,
// 输出 ESLint 执行时的 log,ESLint 不生效的时候可以启用看看
"eslint.trace.server": "messages",
// 配置 ESLint 检查的文件类型,这个配置包括 .js, .html, .vue
"eslint.validate": [
"javascript",
"html",
"vue"
],
// 保存时自动格式化
"editor.formatOnSave": true
}
```
## webstorm
webstorm略复杂些,自带有一套eslint标准,会和本标准部分冲突,需要手动关闭。
1. 禁用所有HTML 、JAVASCRIPT的校验规则(如果没有强迫症可以保留javascript的规则,会有更好的书写校验)。
位置:
`Preferences -> Editor -> inspections`
`HTML`
`JavaScript and TypeScript`
2. 单启用Eslint支持项目级的校验规则
`Preferences -> Editor -> inspections -> JavaScript and TypeScript -> Code quality tools -> Eslint`