一文读懂 ESLint配置

news2024/11/15 11:29:10

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

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

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

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

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

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

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

前言

博主看来很多网络上的视频教程,发现对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.coloradmin.cn/o/1992509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.2 QT 环境配置

2.2 QT环境配置 QT是一个1991年由QT Company开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可以用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器&…

目录函数以及链接文件

一、对stat里面的用户名时间做处理的函数 1.1.getpwuid() struct passwd *getpwuid(uid_t uid); 功能: 根据用户id到/etc/passwd文件下解析获得 结构体信息 参数: uid:用户id 返回值: 成功返回id对应用户的信息 失败返回NULL 1. 2.getgrgid&#xf…

第1章 第2节 数据的表示(软件评测师)

1.若某计算机采用8位整数补码表示数据,则运算(1271)将产生溢出 【解析】8位整数补码表示的整数范围:-128~127 2.采用(补码)表示带符号数据时,算术运算过程中符号位与数值位采用同样的运算规则…

java框架介绍

Java框架是Java开发中不可或缺的一部分,它们为开发者提供了预定义好的软件架构、类和接口,以及编程规范,从而简化了Java应用程序的开发过程。下面我将详细介绍Java框架的几个方面: 一、Java框架的定义 Java框架是一种为了解决特定…

bootstrap之表格

通过添加 .table-striped class&#xff0c;您将在 <tbody> 内的行上看到条纹 通过添加 .table-bordered class&#xff0c;您将看到每个元素周围都有边框&#xff0c;且占整个表格是圆角的 <!DOCTYPE html> <html><head><meta charset"utf…

UBD分层结构的学生信息管理系统(python+pysimplegui+mysql)

目录 作者的吐槽 介绍流程 UBD的结构 UBD的流程图&#xff08;也称不上流程图吧&#xff09; UBD的优缺点 优点 缺点 系统 设计结构 UI UI的一些图片 UI的代码 Business 数据库的连接&#xff08;json&#xff09; Data 总结 作者的吐槽 当知道UBD分层结构之后…

西安产业园排名新趋势,西安国际数字影像产业园以创新驱动发展?

近年来&#xff0c;随着数字经济的快速发展&#xff0c;西安产业园排名也在不断变化。其中&#xff0c;西安国际数字影像产业园凭借其卓越的创新能力和前瞻性的发展战略&#xff0c;迅速崭露头角&#xff0c;成为西安乃至全国数字影像产业的重要推动力量。那么&#xff0c;西安…

elementPlus中el-table的每列两行溢出隐藏怎么设置

el-table的每列两行溢出隐藏怎么设置 elementPlus中的el-table如何设置多行溢出隐藏table中的table属性中有show-overflow-tooltip属性&#xff0c;但是只支持单行溢出隐藏如何改成两行呢&#xff1f;在审查元素中我们发现.el-tooltip这个类名是溢出隐藏的样式&#xff0c;原本…

lvs项目

实验环境 LVS:Linux Virtual Server&#xff0c;负载调度器&#xff0c;内核集成章文嵩&#xff0c;阿里的四层SLB(ServerLoadBalance)是基FLVSkeepalived实现。 一、lvs-net模式 搭建环境以及网络配置 给lvs地址 修改eth1 lvs中打开内核路由功能 sysctl -a | greo ip_forwa…

【总】前端 Swagger url 自动转 JavaScript方法(避免重复工作...)

前言 随着项目增多&#xff0c;且多数为项目定制化接口。避免前端重复封装&#xff0c;从 Swagger 入手&#xff0c;将 url 自动转 js 方法直接用。特别节约时间和资源~ Swagger 简介 Swagger 一款 RESTFUL 接口的、基于 YAML、JSON 语言的文档在线自动生成、代码自动生成的…

Metasploit——强大的渗透测试框架

一、引言 在网络安全领域&#xff0c;渗透测试是评估系统安全性的重要手段。而 Metasploit 作为一款知名的渗透测试框架&#xff0c;为安全研究人员和测试人员提供了强大的工具和资源。本文将详细介绍 Metasploit 的特点、功能、使用方法以及在实际场景中的应用。 二、Metasp…

cad文字转arcgis注记

cad中文字转为arcgis注记&#xff0c;步骤如下&#xff1a; 1、将dwg文件下annotation文件加到图层中 2、文件点击右键&#xff0c;转换地理数据库注记 3、 导入默认地理数据库中&#xff0c;或自己新建地理数据库&#xff0c;起个文件名、点确定&#xff08;注意&#xff1a…

Codeforces Round 916 (Div. 3) D 题 Three Activities

题目描述 Winter holidays are coming up. They are going to last for nn days. During the holidays, Monocarp wants to try all of these activities exactly once with his friends: go skiing;watch a movie in a cinema;play board games. Monocarp knows that, on …

Mysql主从脚本

注意&#xff1a;先执行从服务器的脚本&#xff0c;再执行主服务器脚本 执行脚本时&#xff0c;务必使用source 脚本名称执行脚本 两个脚本都运行完之后 主服务器配置 从服务器配置

Machine-Learning 机器学习

目录 基本概念与分类 工作原理 应用领域 发展趋势 机器学习中的深度学习是如何工作的&#xff0c;以及它如何影响其他机器学习算法&#xff1f; 在机器学习中&#xff0c;哪些特定的数据预处理技术最有效&#xff0c;特别是在处理大规模数据集时&#xff1f; 强化学习在…

DatenLord前沿技术分享 No.40

达坦科技始终致力于打造高性能 Al Cloud 基础设施平台&#xff0c;积极推动AI应用的落地。达坦科技通过软硬件深度融合的方式&#xff0c;提供高性能存储和高性能网络。为 AI 应用提供弹性、便利、经济的基础设施服务&#xff0c;以此满足不同行业客户对 AICloud 的需求。 在本…

AI全息手术:未来医疗的奇迹,你准备好了吗?

想象一下&#xff0c;未来的手术室中&#xff0c;医生们不再依赖二维的X光片或CT扫描&#xff0c;而是通过空中悬浮的三维全息影像&#xff0c;直观地观察和操作人体内部结构。这并非科幻电影中的场景&#xff0c;而是正在成为现实的AI全息影像手术技术。 手术室中的三维魔法 传…

SOEM 源码解析 ecx_eeprom_waitnotbusyAP

/* 在超时时间内、设置EEprom 状态机忙位busy→idle、APRD方法* param[in] context context struct* 上下文结构体* param[in] aiadr auto increment address of slave* 从站自增地址* param[in] timeout …

Java数据结构 | 树的常见习题一(考研题、面试题)

树的常见练习题一 1、一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反&#xff0c;则该二叉树一定满足&#xff08; &#xff09;2、在一颗度为3的树中&#xff0c;度为3的结点有2个&#xff0c;度为2的结点有1个&#xff0c;度为1的结点有2个&#xff0c;则叶子结点有&…

全志平台串口编号更改记录 A133 T527 T133 A523 A527串口编号更改

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3. 情况讨论 4.代码修改 5.彩蛋 1.前言 在嵌入式开发中,更改串口编号是一种常见的操作,以满足特定的硬件配置或调试需求。根据我们之前的文章 android13 串口编号修改 串口名修改-CSDN博客 在全志平台下面使…