因为不懂ESLint,我被公司开除了……

news2024/11/15 5:14:27

你好,我是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/1981369.html

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

相关文章

把握现货黄金价格走势与买入时机 这两点缺一不可

在现货黄金投资中,对黄金价格走势的分析和做交易(买入卖出),这些动作之间是相关联的,而且联系很大,比方说投资者如果没有对现货黄金价格走势做正确有效的分析,那他可能在一些交易中获得盈利&…

【附PDF】《大模型应用开发 动手做 AI Agent》,第一本给程序员看的AI Agent图书!

AI Agent火爆到什么程度? OpenAI创始人奥特曼预测,未来各行各业,每一个人都可以拥有一个AI Agent;比尔盖茨在2023年层预言:AI Agent将彻底改变人机交互方式,并颠覆整个软件行业;吴恩达教授在AI …

隧道通风网络节点图导出CAD文本时的三角形算法

在TESP软件中涉及到将带文本的节点图导出为CAD文件,其中文本的绘制需要根据Section的方向来确定,确保和绘图的习惯一致。具体包括: (1)垂直绘制的Section需确保文字字头向左。 (2)除了垂直的文…

Golang面试题三(map)

1.map底层实现 由图看出,其实map的底层结构体是hmap,同时hmap里面维护着若干个bucket数组(即桶数组)。bucket数组中每个元素都是bmap结构的,bmap中存储着8个key-value的键值对,如果是满了的话,当…

奥运会Ⅵ--LLM 是否狡猾到可以自行欺骗你?

这已经成为一句老生常谈,因为它是事实:人类开发的任何工具都可以用于行善或作恶。你可以用锤子敲钉子或砸某人的头。你可以用火取暖或烧毁房屋。等等。 因此,数字世界的最新工具既带来好处,也带来风险,这不足为奇。其…

文献解读-遗传病-第二十六期|《癫痫的临床特征、诊疗和KCNH5突变》

关键词:遗传病;基因测序;变异检测; 文献简介 标题(英文):Clinical Feature, Treatment, and KCNH5 Mutations in Epilepsy标题(中文):癫痫的临床特征、诊疗和…

文心一言 VS 讯飞星火 VS chatgpt (318)-- 算法导论22.3 10题

十、修改深度优先搜索的伪代码,让其打印出有向图G的每条边及其分类。并指出,如果图G是无向图,要进行何种修改才能达到相同的效果。如果要写代码,请用go语言。 文心一言: 首先,我们来定义深度优先搜索&…

leetcode:汇总区间

题目: 给定一个无重复元素的有序整数数组nums。返回恰好覆盖数组中所有数字的最小有序区间范围列表 。也就是说,nums的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于nums的数字X。列表中的每个区间范围[a,b]应该按…

简单的docker学习 第2章 docker引擎

第2章docker引擎 2.1Docker 引擎发展历程 2.1.1 首发版本架构 Docker 在首次发布时,其引擎由两个核心组件构成:LXC(Linux Container)与 Docker Daemon。不过,该架构依赖于 LXC,使得 Docker 存在严重的问…

人力资源杂志人力资源杂志社人力资源编辑部2024年第13期目录

看法_总编随笔 学会退步 齐向宇; 1 看法_热点聚焦 数说 7 司事 9 看法_热点聚焦_翻转 话题 “霸总”发言遭吐槽对职场年轻人多些体谅 8 看法_视界《人力资源》投稿:cn7kantougao163.com 养老保险改革及其对人事工作的启示 赵梓安; 12-13 做…

潘展乐速度!滴滴无车赔,叫车就是快

8月5日,滴滴网约车“快”乐大使潘展乐在男子4x100米混合泳接力比赛中以45秒92的优异成绩在最后一棒反超,中国队夺得金牌!恭喜潘展乐在本届比赛中和队友一起站上冠军的领奖台,用团队金牌为自己庆生! 为进一步提升用户叫…

三级等保测评如何顺利通过

三级等保认证,作为中国信息安全等级保护制度中的高级别认证,其标准之高、要求之严,在国内信息安全领域内堪称顶尖。根据《信息系统安全等级保护基本要求》,三级等保的测评内容覆盖了等级保护安全技术要求和安全管理要求的多个层面…

android13 删除兼容性警告窗口 deprecation warning 去除弃用警告

总纲 android13 rom 开发总纲说明 目录 1.前言 2.情况 3.问题分析 4.代码更改 5.编译测试 6.彩蛋 1.前言 在 Android 13 中,为了提高用户体验和应用的兼容性,系统引入了一些新的隐私和安全特性。这些特性可能会影响旧版应用的行为,因此当用户运行可能不完全兼容 An…

【HarmonyOS NEXT星河版开发学习】小型测试案例01-今日头条置顶练习

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面 ​ 前言 本系列可能是博客首发,鸿蒙开发星河版是一个全新的版本,由于参考视频较少鸿蒙开发不被重视导致csdn上面并没有全套的学习路线,…

6款免费版文章生成器,为你的创作提供无限可能

在这个信息发展迅速的时代,创作者们常常陷入时间和灵感的困境中。为了应对这一挑战,人工智能技术为我们提供了一种全新的解决方案——文章生成器。在这些文章生成器中可以帮助我们快速生成高质量的内容,为我们的创作提供无限可能。在本文中&a…

json文件格式

json文件格式 格式介绍1格式介绍2格式3 格式介绍1 格式介绍2 格式3 参考地址

全自动真空拌馅机 肠类肉丸类馅料搅拌机:

拌馅机,作为现代厨房与食品加工行业不可或缺的利器,其优点繁多,宛如烹饪艺术中的魔术师,为食材的融合与美味的创造开辟了新的维度。 首先,拌馅机以其高效均匀的搅拌能力著称,能够瞬间将肉类、蔬菜、调料等多…

微信小程序 - 自定义计数器 - 优化(键盘输入校验)

微信小程序通过自定义组件,实现计数器值的增加、减少、清零、最大最小值限定、禁用等操作。通过按钮事件触发方式,更新计数器的值,并修改相关联的其它变量。通过提升用户体验,对计数器进行优化设计,使用户操作更加便捷…

亚马逊测评:提升产品信誉与销量的关键

在亚马逊这样竞争激烈的环境中。通过有效的测评,卖家可以轻松为自己的产品添加评论、提高排名,进而打造出优质的产品。然而,亚马逊测评并不等同于刷单。今天,将深入探讨亚马逊测评的本质、与刷单的区别,以及如何在这个…

新能源车燃料和动力电池及系统应用概述(上)

随着化石能源的日益消耗和对环保的逐渐重视,利用电能取代化石能源作为动力的电动汽车受到了世界各国的关注和大力研发。电池技术作为电动汽车的核心和瓶颈,是电动汽车研究的重点和热点方向,也是关系到新能源汽车成本、续航里程、安全性及使用…