一文读懂 ESLint配置

embedded/2024/11/25 7:55:52/

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客

这是我的 github https://github.com/Qiuner ⭐️

​ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个吧~ 我会很高兴的 😄 (^ ~ ^)

想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎

代码都在github或gitee上,可以去上面自行下载

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号
本篇介绍了代码校验工具ESlint的配置规则与常用的配置项,无论是新手还是老手都能有所收获

文章目录

    • 前言
    • 使用ESLint
      • 一:命令行安装ESLint
      • 二:在VSCode安装ESLint插件
      • 三:ESLint通过什么来实现代码风格一致与规范写法?
      • 四:.eslintignore文件配置与文件配置规则
        • 常用的配置规则
        • 具体配置规则
        • 示例
      • 五:eslint.config.js文件配置与配置规则
        • 常用的配置规则与解释
          • `vue` 部分
          • 全局 `rules` 部分
        • 使用eslint.config.js的办法
          • 第一步:导入antfu
          • 第二步:在导入的的函数中编写你的配置项
    • 总结

前言

博主看来很多网络上的视频教程,发现对ESLint配置的介绍是比较少的。但ESLint是很有用的,一个项目是否健全多人开发一个项目时,能否实现代码风格一致,ESLint在这个过程中是不可替代的。今天就来详细介绍ESLint配置规则,与推荐一些基础的配置。

什么是ESLint

  • ESLint 是一种静态代码分析工具,用于在编写 JavaScript 和 TypeScript 代码时识别和报告问题。它的主要目标是帮助开发者在早期阶段发现代码中的潜在错误和不良模式,确保代码的一致性和高质量。

使用ESLint

一:命令行安装ESLint

npm init @eslint/config

image-20240805143247501

  • 安装后能在包工具中看到

二:在VSCode安装ESLint插件

image-20240805085508518

三:ESLint通过什么来实现代码风格一致与规范写法?

文件名/类型作用格式
.eslintrc定义 ESLint 的规则、环境、解析器、插件等JSON、YAML 或 JavaScript
eslint.config.js以 JavaScript 形式编写 ESLint 配置,允许使用更多编程逻辑JavaScript
.eslintignore指定 ESLint 应忽略的文件和目录类似于 .gitignore,一行一个路径
规则定义文件(plugins)扩展 ESLint 功能,定义一组规则N/A
  • 简单来说,在你项目引入了ESLint后,你只需要在项目目录下放这些文件,就可以达到配置ESLint的效果

image-20240805094955238

  • 一般情况下,我们在项目中添加 .eslintrc.eslintignore就能够比较健全的使用ESLint了

四:.eslintignore文件配置与文件配置规则

常用的配置规则

在这里,我给出我项目中一般会使用的.eslintignore配置

docs
dist
public
node_modules.versionrc
auto-imports.d.ts
components.d.ts**/dist/**
**/public/**
**/docs/**
**/node_modules/**
**/.versionrc/**
**/types/**/*
具体配置规则
配置规则说明示例
每行一个模式每行指定一个路径模式,匹配的文件或目录将被忽略node_modules/
注释使用 # 开头的行被视为注释# 忽略 node_modules 目录
空行空行会被忽略,用于提高可读性(空行)
绝对路径和相对路径路径相对于 .eslintignore 文件所在的位置logs/
通配符 ** 匹配零个或多个字符*.js(匹配所有 .js 文件)
双星号 **** 匹配任意数量的子目录src/**(匹配 src 目录下的所有文件和子目录)
否定模式! 开头的行表示否定模式,用于取消之前的忽略规则!index.js(不忽略 index.js 文件)
示例
# 忽略 node_modules 目录
node_modules/# 忽略构建输出目录
dist/
build/# 忽略所有压缩文件
*.zip# 忽略所有日志文件
logs/# 忽略特定文件
src/legacy-code.js# 忽略特定文件类型
*.min.js# 忽略所有图片文件
*.png
*.jpg
*.jpeg
*.gif# 忽略所有子目录中的 .test.js 文件
**/*.test.js# 否定模式:不忽略 src/index.js 文件
!src/index.js

五:eslint.config.js文件配置与配置规则

常用的配置规则与解释

在这里,我给出我项目中一般会使用的eslint.config.js配置

import antfu from '@antfu/eslint-config'export default antfu({vue: {overrides: {'vue/operator-linebreak': 'off','vue/singleline-html-element-content-newline': 'off','vue/multi-word-component-names': 'off','vue/no-v-model-argument': 'off','vue/require-default-prop': 'off','vue/require-prop-types': 'off','vue/html-self-closing': 'off','vue/quote-props': 'off','vue/no-irregular-whitespace': 'off','vue/prop-name-casing': 'off','vue/html-indent': 'off','vue/no-reserved-component-names': 'off',},},typescript: true,},{rules: {'antfu/if-newline': 'off','style/jsx-closing-tag-location': 'off','import/order': 'off','prefer-const': 'error','node/prefer-global/process': 'off','unused-imports/no-unused-vars': 'off','style/semi': 'off','style/indent': 'off','style/quote-props': 'off','style/brace-style': 'off','style/arrow-parens': 'off','style/indent-binary-ops': 'off','style/operator-linebreak': 'off','style/member-delimiter-style': 'off','no-var': 'error','no-undef': 'off','no-new': 'off','no-param-reassign': 'error','no-console': 'off','no-irregular-whitespace': 'off','unicorn/number-literal-case': 'off','ts/ban-ts-comment': 'off',},},
)
vue 部分
  • vue 配置

    :应用于 Vue 文件的规则覆盖。

    • vue/operator-linebreak: 关闭操作符换行规则。
    • vue/singleline-html-element-content-newline: 关闭单行 HTML 元素内容的新行要求。
    • vue/multi-word-component-names: 关闭组件名称多词规则。
    • vue/no-v-model-argument: 关闭对 v-model 参数的规则。
    • vue/require-default-prop: 关闭默认 prop 需求规则。
    • vue/require-prop-types: 关闭 prop 类型要求规则。
    • vue/html-self-closing: 关闭 HTML 自闭合规则。
    • vue/quote-props: 关闭属性引号规则。
    • vue/no-irregular-whitespace: 关闭不规则空白检查。
    • vue/prop-name-casing: 关闭 prop 名称大小写规则。
    • vue/html-indent: 关闭 HTML 缩进规则。
    • vue/no-reserved-component-names: 关闭保留组件名称检查。
全局 rules 部分
  • rules 配置

    :覆盖和配置 ESLint 的全局规则。

    • antfu/if-newline: 关闭 antfu 插件的 if-newline 规则。
    • style/jsx-closing-tag-location: 关闭 JSX 关闭标签位置规则。
    • import/order: 关闭 import 语句的排序规则。
    • prefer-const: 强制使用 const 来声明不被修改的变量。
    • node/prefer-global/process: 关闭对 process 全局变量的偏好规则。
    • unused-imports/no-unused-vars: 关闭未使用的导入变量规则。
    • style/semi: 关闭语句末尾分号规则。
    • style/indent: 关闭缩进规则。
    • style/quote-props: 关闭属性引号规则。
    • style/brace-style: 关闭大括号风格规则。
    • style/arrow-parens: 关闭箭头函数参数的括号规则。
    • style/indent-binary-ops: 关闭二元运算符的缩进规则。
    • style/operator-linebreak: 关闭操作符换行规则。
    • style/member-delimiter-style: 关闭成员分隔符风格规则。
    • no-var: 禁止使用 var 关键字,建议使用 letconst
    • no-undef: 关闭对未定义变量的检查。
    • no-new: 关闭禁止直接使用 new 关键字的规则。
    • no-param-reassign: 禁止重新分配函数参数。
    • no-console: 关闭禁止使用 console 的规则。
    • no-irregular-whitespace: 关闭不规则空白检查规则。
    • unicorn/number-literal-case: 关闭 unicorn 插件的数字字面量大小写规则。
    • ts/ban-ts-comment: 关闭 TypeScript 对 @ts- 注释的禁止规则。
使用eslint.config.js的办法
第一步:导入antfu
import antfu from '@antfu/eslint-config'
第二步:在导入的的函数中编写你的配置项
export default antfu(
{vue: {overrides:{'vue/operator-linebreak': 'off','vue/singleline-html-element-content-newline': 'off',}
}
}
)
  • 如上所示,通过这种这种括号之类的来进行对内容的检查

image-20240805142844732

总结

​ 有了ESLint,其实还是不够的,因为这只负责检查语法,而不负责自动格式化,自动格式化规则设置需要使用到Prettier,至于Prettier怎么使用,等待下一期吧

更多专栏订阅:
  • 📊 一图读懂系列

  • 📝 一文读懂系列

  • ⚽ Uniapp

  • 🌟 持续更新

  • 🤩 Vue项目实战

  • 🚀 JavaWeb

  • 🎨 设计模式

  • 📡 计算机网络

  • 🎯 人生经验

  • 🔍 软件测试

掘金账号

感谢订阅专栏 三连文章

http://www.ppmy.cn/embedded/140328.html

相关文章

正则表达式灾难:重新认识“KISS原则”的意义

大家好,这里是hikktn! 最近,我在重读经典名著《The Art of Unix Programming》,又一次被那句广为人知的“KISS”原则(Keep It Simple, Stupid)吸引。这句计算机领域的金科玉律,很多人只停留在字…

AwsCredentialsProvider认证接口

一、介绍 1、简介 AwsCredentialsProvider 是 AWS SDK 中用于提供 AWS 身份验证凭证的一个接口。AWS SDK 中涉及身份验证和授权的操作都需要用到凭证,而 AwsCredentialsProvider 作为一种抽象,负责提供这些凭证。AwsCredentialsProvider 在 Java SDK 中尤为重要,它可以用于…

【网络安全设备系列】3、IPS(入侵防御系统)

0x00 定义: 入侵防御系统是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。 0x01 产生背景 : 1、串行部署的防火墙可以拦截低层攻击行为&a…

C 语言复习总结记录二

C 语言复习总结记录二 一 控制语句 1、语句的分类 表达式语句函数调用语句复合语句控制语句空语句 控制语句 控制程序的执行流程,实现程序的各种结构方式 C 语言支持三种结构 :顺序结构、选择结构、循环结构,由特定的语句定义符组成C语言…

Qt关于窗口一直调用paintEvent的踩坑实录

首先看以下代码&#xff1a; void ItemBlockWidget::paintEvent(QPaintEvent *ev) {// 先调用父类的 paintEvent 以执行默认绘制行为QWidget::paintEvent(ev);qDebug()<<"ItemBlockWidget重绘";QStyleOption opt;opt.initFrom(this);QPainter p(this);style()…

windows11下git与 openssl要注意的问题

看了一下自己贴文的历史&#xff0c;有一条重要的忘了写了。 当时帮有位同事配置gitlab&#xff0c;众说周知gitlab是不太好操作。 但我还是自认自己git还是相当熟的。 解决了一系列问题&#xff0c;如配置代理&#xff0c;sshkey&#xff0c;私有库&#xff0c;等等&#xff0…

Selenium + 数据驱动测试:从入门到实战!

引言 在软件测试中&#xff0c;测试数据的多样性和灵活性对测试覆盖率至关重要。而数据驱动测试&#xff08;Data-Driven Testing&#xff09;通过将测试逻辑与数据分离&#xff0c;极大地提高了测试用例的可维护性和可扩展性。本文将结合Selenium这一流行的测试工具&#xff0…

Vue进阶面试题目(一)

Vue 自定义事件中&#xff0c;父组件如何接收子组件传递的多个参数? 在 Vue 中&#xff0c;子组件可以通过 $emit 方法触发自定义事件&#xff0c;并传递参数。父组件可以通过监听这个事件来接收参数。如果子组件需要传递多个参数&#xff0c;可以将这些参数作为数组或对象传…