深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具

14 篇文章 0 订阅

一、介绍

ESLint是一个主流的JavaScript Lint工具,用于监测JavaScript代码质量,可以帮助开发者提升编码能力。它可以很容易地统一开发者的编程风格,同时也可以通过配置文件来自定义规则。在前端开发中,ESLint可以帮助我们检查代码中的潜在问题,提高代码的可读性和可维护性。

二、作用

ESlint作为代码检查工具,其作用主要有以下几点:

  • 代码规范检查:ESLint可以根据预设的规范对代码进行静态分析,检查代码中的潜在问题,如未使用的变量、未定义的变量、不符合规范的代码风格等。
  • 代码质量评估:ESLint可以根据预设的规则对代码进行质量评估,如代码复杂度、代码重复度等,帮助开发者提高代码质量。
  • 提供自定义规则:ESLint允许开发者根据自己的需求编写自定义规则,以适应特定的项目需求和编码风格。
  • 语法检查:ESLint可以检查代码中的语法错误,帮助开发者避免常见的语法错误。
  • 代码风格统一:ESLint可以根据预设的代码风格规则,对代码进行风格统一,确保整个项目的代码风格一致。
  • 代码自动修复:ESLint可以根据预设的规则自动修复代码中的一些问题,如自动添加缺失的分号、自动调整缩进等。

三、安装

安装依赖

npm install -g eslint

安装完成 ESLint 插件后,我们就会发现 鼠标指向代码时就能看到了警告与错误提示 ,那么我们怎么做到保存时自动修正代码呢,我们需要 把下面的配置项复制到 settings.json 中

// 复制到 settings.json 中
  "editor.formatOnType": true, // 控制编辑器在键入一行后是否自动格式化该行
  "editor.formatOnSave": true, // 在保存时格式化文档
  "eslint.codeAction.showDocumentation": {
    "enable": true
  },
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true,
  },
  "eslint.validate": [ // 检测语言
    "javascript",
    "javascriptreact",
    "html",
    "vue",
    "typescript",
    "typescriptreact",
    "markdown"
  ],

四、配置

要配置ESLint 主要有一下两种方法:

  • 在注释中直接配置

  • 在配置文件中配置, JavaScript、JSON 或者 YAML 格式的.eslintrc.* 文件,或者直接在 package.json 文件里的 eslintConfig 字段指定配置,ESLint 会查找和自动读取它们,再者,你可以在命令行运行时指定一个任意的配置文件。

1、在.eslintrc的文件进行配置:
  • env: 指定代码的运行环境
  • globals:额外的全局变量
  • parserOptions: 指定 JavaScript 相关的选项。ecmaVersion 指定用哪个ECMAScript 的版本,默认是 3 和 5。
  • rules: 具体检查的规则,不设置则不会检查
2、配置规则
  • “off” 或 0 - 关闭规则
  • “warn” 或 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出)
  • “error” 或 2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出)
{
  "env": {
    "browser": true,
    "commonjs": true,
    "es6": true
  },
  "parserOptions": {
    "ecmaVersion": 6
  },
  // ESLint 规则配置
  "rules": {
    "indent": ["error", 2],
    "no-mixed-spaces-and-tabs": "error"
    "camelcase": "error",
    "eqeqeq": "warn",
    "curly": "error",
    "no-undef": "error",
    "no-unused-vars": "warn",
    "max-params": "warn",
    // 0是忽略,1是警告,2是报错
    "quotes": 2,                        // 非双引号报错
    "semi": 1,                          // 无分号就警告
    "no-console": 1,                    // 有console.log就警告
    "space-before-function-paren": 0    // 函数前空格忽略
  }
}
3、优先级
3.1、行内配置
  1. /eslint-disable/ 和 /eslint-enable/
  2. /global/
  3. /eslint/
  4. /eslint-env/
3.2、命令行选项(或 CLIEngine 等价物):
  1. –global
  2. –rule
  3. –env
  4. -c, --config
3.3、项目级配置:

如果同一个目录下有多个配置,ESLint 只会使用一个(并不会进行合并配置)。优先级顺序如下:

  1. .eslintrc.js
  2. .eslintrc.yaml
  3. .eslintrc.yml
  4. .eslintrc.json
  5. .eslintrc
  6. package.json

对于临时忽略,可以使用注释方式;对于永久忽略,可以在配置文件中禁用规则。

4、Inline 注释

在代码行前添加 // eslint-disable-line 或 // eslint-disable-next-line 注释:

alert('foo'); 

// eslint-disable-line no-alert
alert('foo'); 

// eslint-disable-next-line no-alert
alert('bar');

这将忽略那一行的规则检查。

5、块注释
/* eslint-disable no-alert */
alert('foo'); 
alert('bar');
/* eslint-enable no-alert */

这会在块的开始和结束处启用和禁用指定的规则。

6、在文件顶部添加规则注释

在文件顶部添加:

/* eslint-disable no-alert */

这将忽略整个文件中指定的规则。

7、在 .eslintignore 文件中添加忽略规则

在 .eslintignore 文件中添加:

example.js

这将忽略 example.js 文件中的所有规则检查。

8、在 package.json 中添加忽略规则

在 package.json 中添加:

"eslintIgnore": [
    "example.js" 
]

这也会忽略 example.js 中的所有规则检查。

9、在规则中添加 “off” 或 0 选项

在 .eslintrc.js 配置文件中将指定规则设置为 “off” 或 0:

"rules": {
    "no-alert": "off" 
}

这将关闭 no-alert 规则的检查。

五、示例

module.exports = {
  //此项是用来告诉eslint找当前配置文件不能往父级查找
  root: true,
  //指定eslint继承的模板
  extends: ["plugin:vue/essential", "@vue/standard"],
  //此项指定环境的全局变量,下面的配置指定为浏览器环境
  env: {
    browser: true
  },
  // 此项是用来提供插件的,插件名称省略了eslint-plugin-,下面这个配置是用来规范html的
  plugins: ["vue"],
  //指定javaScript语言类型和风格
  parserOptions: {
    parser: "babel-eslint"
  },
  //规则https://www.wenjiangs.com/docs/eslint,vue规则:https://eslint.vuejs.org/rules/
  // 主要有如下的设置规则,可以设置字符串也可以设置数字,两者效果一致
  // "off" -> 0 关闭规则
  // "warn" -> 1 开启警告规则
  // "error" -> 2 开启错误规则
  rules: {
    // 使用 === 替代 == allow-null允许null和undefined== [2, "allow-null"]
    eqeqeq: 0,
    // 双峰驼命名格式
    camelcase: 0,
    //要求或者禁止Yoda条件
    yoda: 2,
    // 行尾不使用分号
    semi: 0,
    //强制一致地使用反引号、双引号或单引号。
    quotes: 2,
    //强制函数中的变量在一起声明或分开声明
    "one-var": 2,
    // 禁用 console
    "no-console": process.env.NODE_ENV === "production" ? "error" : "off",
    // 强制 generator 函数中 * 号周围使用一致的空格
    "generator-star-spacing": "off",
    // 禁用 debugger
    "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
    // 禁止对象字面量中出现重复的 key
    "no-dupe-keys": 2,
    // 函数参数不能重复
    "no-dupe-args": 2,
    // 禁止重复的函数声明
    "no-func-assign": 2,
    // 禁止重复的 case 标签
    "no-duplicate-case": 2,
    // 禁用未声明的变量
    "no-undef": 1,
    //禁止出现多个空格
    "no-multi-spaces": 2,
    // 不允许标签与变量同名
    "no-label-var": 2,
    //禁止tab
    "no-tabs": 1,
    // 禁止 var 声明 与外层作用域的变量同名
    "no-shadow": 0,
    // 禁止 if 语句中有 return 之后有 else
    "no-else-return": 0,
    // 禁止出现空函数.如果一个函数包含了一条注释,它将不会被认为有问题。
    "no-empty-function": 1,
    // 禁止出现未使用过的变量
    "no-unused-vars": 1,
    //禁止在返回语句中赋值
    "no-return-assign": 0,
    // 禁用行尾空格
    "no-trailing-spaces": 2,
    // 禁止修改 const 声明的变量
    "no-const-assign": 2,
    // 禁止类成员中出现重复的名称
    "no-dupe-class-members": 2,
    //禁止使用alert confirm promp
    "no-alert": process.env.NODE_ENV === "production" ? "error" : "off",
    //禁止多余的冒号
    "no-extra-semi": 2,
    //禁止在条件中使用常量表达式
    "no-constant-condition": 2,
    //空行最多不能超过2行
    "no-multiple-empty-lines": [1, { max: 2 }],
    //禁止无用的表达式
    "no-unused-expressions": 1,
    //禁用不必要的嵌套块
    "no-lone-blocks": 2,
    //不允许使用逗号操作符
    "no-sequences": 2,
    //禁止不规则的空白
    "no-irregular-whitespace": 2,
    //函数括号前的空格
    "space-before-function-paren": 0,
    //处理回调错误
    "handle-callback-err": 1,
    //首选承诺拒绝错误
    "prefer-promise-reject-errors": 0,
    //要求或禁止在注释前有空白 (space 或 tab)
    "spaced-comment": 1,
    //强制关键字周围空格的一致性
    "keyword-spacing": 1,
    //强制在花括号中使用一致的空格
    "object-curly-spacing": 1,
    // 控制逗号前后的空格
    "comma-spacing": [
      2,
      {
        before: false,
        after: true
      }
    ],
    // 要求或禁止 var 声明语句后有一行空行
    "newline-after-var": 0,
    //强制使用一致的缩进
    indent: 0,
    // html 内 缩进
    "vue/html-indent": 0,
    // 插值两端必须留一个空格
    "vue/mustache-interpolation-spacing": 0,
    //强制每行的最大属性数
    "vue/max-attributes-per-line": 0,
    //vue/属性顺序
    "vue/attributes-order": 0,
    // 强制要求在对象字面量的属性中键和值之间使用一致的间距 "var obj = { "foo": 42 };"
    "key-spacing": 0,
    // 禁止末尾逗号
    "comma-dangle": 0,
    // 强制在块之前使用一致的空格 "function a() {}"
    "space-before-blocks": 0,
    // 要求操作符周围有空格 "a ? b : c"
    "space-infix-ops": 2,
    // "() => {};" // 强制箭头函数前后使用一致的空格
    "arrow-spacing": 2,
    //插值中强制统一间距
    //强制组件中的属性顺序
    "vue/order-in-components": 0,
    //不允许字段名称重复
    "vue/no-dupe-keys": 2,
    //多次引用同个包
    "import/no-duplicates": 2,
    //执行有效v-for指令
    "vue/valid-v-for": 2,
    //V-bind:key使用v-for指令要求
    "vue/require-v-for-key": 2,
    //不允许解析错误<template>
    "vue/no-parsing-error": [2, { "x-invalid-end-tag": false }],
    //强制执行自闭式
    "vue/html-self-closing": "off",
    //不允许计算属性中的副作用
    "vue/no-side-effects-in-computed-properties": 0,
    //禁止 v-for 指令或范围属性的未使用变量定义
    "vue/no-unused-vars": 1,
    //执行有效v-model指令
    "vue/valid-v-model": 2,
    //强制执行有效的模板根
    "vue/valid-template-root": 2
  }
};

  • 31
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
《Spring MVC从入门到精通》是一本非常实用的书籍,它帮助读者系统地学习和掌握Spring MVC框架。 这本书旨在帮助读者逐步了解Spring MVC的基本概念、架构和工作原理。首先,它介绍了Spring MVC框架的发展历程和基本特点,让读者对其背景和优势有了基本的了解。然后,书中详细阐述了Spring MVC的核心组件,如控制器、视图解析器、数据绑定等,通过实例代码和示意图,使读者能够清晰地理解它们的作用和用法。 接着,《Spring MVC从入门到精通》引导读者学习如何配置和使用Spring MVC。它介绍了Spring MVC配置文件的结构和常用标签,详细讲解了如何配置URL映射、视图解析、拦截器等功能。此外,书中还涵盖了处理表单提交、文件上传、异常处理等常见开发需求的实践技巧,以帮助读者在实际项目中应用Spring MVC框架。 除了基本功能之外,这本书还介绍了Spring MVC的高级特性和扩展机制,如RESTful风格的开发、拦截器链、文件下载等,帮助读者进一步优化和扩展自己的应用。此外,书中还专门介绍了Spring MVC与其他技术的集成,如与Spring Boot、Hibernate、MyBatis等的搭配使用,以满足实际项目的需求。 总的来说,《Spring MVC从入门到精通》是一本非常全面、深入的学习指南。通过系统的学习和实践,读者能够从入门到精通掌握Spring MVC框架,提升自己在web开发中的技能水平。无论你是初学者还是有一定经验的开发者,这本书都是值得阅读和研究的良好参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邹荣乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值