前言
- 在团队协作中,为了产出风格统一的代码,会预先制定编码规范。 使用Lint工具和代码风格检测工具,可以辅助编码规范执行,有效地控制代码质量以及避免低级的Bug。
ESLint是什么
- 语法规则和代码风格的检查工具
ESLint带来的好处
- 统一代码风格
- 减少review成本和低级错误的出现
- 支持插件扩展、自定义规则
ESLint的使用
** 假设你已经安装了命令行工具 **
- 本地安装
npm install eslint --save-dev
-
方式1:自行生成配置文件
- 官方提供生成配置文件的方式
在根目录执行 eslint --init,,接下来有好多选项供你选择,至于选择什么视具体情况而定。选择完后会生成eslintrc文件。选项如图所示:
这里边包含了常用的规则,更具体的参考文档自行配置,点击前往 - 官方提供生成配置文件的方式
-
方式2:项目(Vue)中快速上手(推荐)
- 安装ESLint基本的依赖
- 先看图(以vue项目为例):
- 先看图(以vue项目为例):
安装上述依赖,执行 npm i eslint eslint-config-standard eslint-friendly-formatter eslint-plugin-import eslint-plugin-node eslint-plugin-promise eslint-plugin-standard --save-dev (这些都是eslint-config-standard这个npm包里推荐我们去安装的,因为它的校验规则要依赖于这些plugins进行去验证的) 命令仅供参考~- 安装预处理依赖
如果你希望在项目开发过程中,每次修改代码就能自动进行ESLint的检查,那么你需要安装【eslint-loader】,这样做的好处是
- 快速发现问题并定位问题
- 迅速修复
- 养成规范写代码的习惯
要达到上述效果,你需要做: npm install eslint-loader babel-eslint --save-dev extra: 为什么需要配置parser? 因为项目是基于webpack的,项目里的代码需要经过babel去处理。 babel处理这种语法可能对ESLint不是特别的支持,然后我们使用loader处理ESLint的时候就会出现一些问题。所以一般来说,我们用webpack和babel来进行开发的项目,都会指定它的parser使用babel-eslint。 - 执行完上边步骤后,我们在build目录下找到webpack.config.base.js,在module下面的rules里添加一个对象。
rules: [ { test: /\.(js|vue)$/, loader: "eslint-loader", enforce: "pre", include: [resolve('src'), resolve('test'), options: { formatter: require("eslint-friendly-formatter") } } ... ] extra: enforce: 'pre', 为预处理。在vue-loader处理.vue文件之前,先让eslint-loader进行一次代码检查。检查如果过不了,就不需要vue-loader处理了,直接抛错。。贴上目前项目中的代码块:
此时的你会想 【config.dev.useEslint】从哪里来,它位于config → index.js 如果不想使用ESLint,关掉即可。- 这样做的好处是更加灵活,可以根据自己的意愿选择开启或关掉。
- 如果你要写formatter,那么你需要安装【eslint-friendly-formatter】 它的作用是-可以让eslint的错误信息出现在终端上
- 在项目的根目录手动创建【.eslintrc.js】
- 在Vue项目中,.vue文件写的是类似于html的格式,不是标准的JavaScript文件,ESLint是无法直接识别.vue文件里的JavaScript代码的
- 所以我们需要安装一个工具【npm i eslint-plugin-vue --save-dev】(推荐)或 【 npm i eslint-plugin-html --save-dev】
- 因为在Vue文件里面写JavaScript代码也是在script标签里写的,这个插件的作用就是识别一个文件里面script标签里面的代码,官方也是这么推荐的
输入以下配置内容 module.exports = { 1. // 自定义配置。可参考http://eslint.cn/docs/user-guide/configuring 2. // 可快速使用的配置【ESLint的配置方式】的第一条 }- 可在项目中直接使用的配置,参考下边【ESLint的配置方式】的第一条,可直接使用。若想配置其他的,请点击这里
- 安装ESLint基本的依赖
- 新增文件【.eslintignore 用来配置不需要检查的文件】
/build/
/config/
/dist/
/*.js
- 现在你可以愉快的使用ESLint检测项目代码了。
ESLint的配置方式
可以通过三种方式配置ESlint:
-
使用【.eslintrc】 文件,最常见。例如 .eslintrc.js
- 注意:放到项目根目录,则应用到整个项目。 如果子目录中也有该文件,则会忽略根目录的配置文件,应用该目录的配置文件。
// https://eslint.org/docs/user-guide/configuring { root: true, parserOptions: { parser: 'babel-eslint' }, env: { browser: true, }, extends: [ // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. 'plugin:vue/essential', // https://github.com/standard/standard/blob/master/docs/RULES-en.md 'standard' ], // required to lint *.vue files plugins: [ 'vue' ], // add your custom rules here rules: { // allow async-await 'generator-star-spacing': 'off', // allow debugger during development 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' } } -
在 【package.json】中添加配置块
"eslintConfig":{
"name": "mypackage",
"version": "0.0.1",
"eslintConfig": {
"env": {
"browser": true,
"node": true
}
}
}
- 直接在代码中定义
- 注意:代码文件内的配置会覆盖配置文件里的规则
禁用ESLint /* eslint-disable */ let obj = { key: 'value', } /* eslint-enable */
ESLint检测代码规范性的方式
- 你可以使用一条命令去检测本项目中所以不符合eslint规范的文件
- 具体方法如下:
- 打开package.json文件
在【scripts】里添加一行 "scripts": { "lint": "eslint --ext .js,.vue src", } 对应的指令表示用 eslint 检查 src 目录下扩展名为 js 和 vue 的文件。- 打开webstorm,打开Setting窗口
- 在Setting → Editor → Code Style → HTML → Other → “Do not indent children of:” 中添加 script,并保存。因为webstorm 的缩进规则和 eslint-vue 是冲突的。
- 执行 npm run lint
- 此时的你会看到所以不符合eslint规范的文件
ESLint提供的自动修复
- Eslint 提供自动修复基础错误的功能。
以下几种情况不能自动修复(举常见)需手动修改- 变量【a】定义了,但是从未使用
- 判断使用【==】,应使用【===】
- 变量重名
- 表达式写成赋值
- 操作步骤
- 打开package.json文件
在【scripts】里添加一行 "scripts": { "lint-fix": "eslint --fix --ext .js,.vue src" } lint-fix 对应的指令表示直接修复 eslint 的检查错误。- 执行 npm run lint-fix
编辑器集成ESLint
- 假设全局安装了ESLint或项目中依赖添加了ESLint
- 以Webstorm为例,在File → settings → Languages & Frameworks → JavaScript → Code Quality Tools → ESLint
如果设置不了,请检查eslint版本。 - 接下来如果在开发工程中你的代码不符合规范,编辑器就会报红,你就可以及时修正了~