ESLint 使用教程(五):ESLint 和 Prettier 的结合使用与冲突解决
前言
在现代前端开发中,代码质量与代码风格的统一是两个非常重要的方面。良好的代码质量能减少 bug 的产生,而统一的代码风格则能提高团队协作的效率。为了实现这两个目标,我们通常会使用一些工具。
为了保证代码的可读性和维护性,我们通常会使用代码检查工具(如 ESLint)和代码格式化工具(如 Prettier)。然而,这两者在结合使用时可能会产生一些冲突。那么,如何高效地结合 ESLint 和 Prettier 呢?
工具介绍
ESLint
ESLint 是一种静态代码分析工具,用于识别和报告 JavaScript 代码中的模式和问题。它可以帮助我们找出代码中的潜在错误(如未使用的变量、未定义的变量等),并且能够根据配置的规则提示代码风格问题。
Prettier
Prettier 是一个代码格式化工具,它可以根据预定义的规则自动格式化代码,使代码风格一致。Prettier 是一种“有意见的”(opinionated)格式化工具,它会覆盖代码风格相关的 ESLint 规则。
为什么要结合使用?
虽然 ESLint 和 Prettier 都涉及代码风格问题,但它们有不同的侧重点:
- eslint 专注于代码质量和潜在的错误检测。它能捕获逻辑错误和潜在的 bug,比如未定义的变量、未使用的变量等。
- prettier 专注于代码格式。它能确保代码风格一致,比如缩进、单引号与双引号的使用、分号的添加等。
通过结合使用 ESLint 和 Prettier,我们可以既保证代码质量,又保证代码风格一致。
冲突情况
尽管我们已经做了很多工作来避免冲突,但在实际使用中仍然可能会遇到一些问题。以下是常见的冲突及其解决方法:
1. 规则覆盖问题
某些情况下,ESLint 和 Prettier 的规则可能会相互覆盖,比如缩进、分号等。通过使用 eslint-config-prettier,我们已经禁用了所有可能与 Prettier 冲突的 ESLint 规则。
2. 配置不一致
确保 ESLint 和 Prettier 的配置文件都存在并且配置一致。比如,如果 Prettier 配置了使用单引号,而 ESLint 没有相应的配置,会导致冲突。
// .eslintrc
{"extends": ["plugin:prettier/recommended"]
}// prettier.config.js
module.exports = {singleQuote: true
}
3. 编辑器插件冲突
有时,编辑器中的 ESLint 和 Prettier 插件可能会产生冲突。确保你使用的插件版本是最新的,并且配置正确。
使用步骤
步骤一:安装依赖
首先,我们需要安装必要的依赖。假设你已经有一个基于 Node.js 的项目,执行以下命令安装 ESLint 和 Prettier:
npm install --save-dev eslint prettier eslint-config-prettier eslint-plugin-prettier
上述命令安装了以下几个包:
- eslint:ESLint 核心库。
- prettier:Prettier 核心库。
- eslint-config-prettier:禁用所有可能与 Prettier 冲突的 ESLint 规则。
- eslint-plugin-prettier:将 Prettier 作为 ESLint 的一个规则,方便在 ESLint 中运行 Prettier 并报告格式化错误。
步骤二:配置 ESLint
在项目根目录下创建或编辑 .eslintrc 文件,添加以下配置:
{"extends": ["eslint:recommended","plugin:prettier/recommended"],"plugins": ["prettier"],"rules": {"prettier/prettier": "error"}
}
这段配置做了几件事:
- 扩展了 ESLint 推荐的规则集。
- 使用 eslint-plugin-prettier 提供的推荐配置。
- 将 Prettier 的格式化规则作为 ESLint 的一部分,任何 Prettier 格式化问题都会被报告为 ESLint 错误。
步骤三:配置 Prettier
在项目根目录下创建或编辑 prettier.config.js 文件,添加 Prettier 的配置:
module.exports = {semi: false,singleQuote: true,trailingComma: "es5",printWidth: 80,tabWidth: 2
}
你可以根据自己的代码风格需求调整这份配置。
步骤四:在编辑器中集成
大多数现代代码编辑器(如 VSCode)都支持 ESLint 和 Prettier 插件。确保你安装并启用了相关插件,以便在编码时能够实时看到格式化和检查结果。


总结
eslint 和 prettier 分别在代码质量和代码格式化方面发挥着重要作用。通过结合使用它们,我们可以在保证代码高质量的同时,确保代码风格的一致性,从而提升开发效率,减少团队协作中的摩擦。
相关文章:
ESLint 使用教程(五):ESLint 和 Prettier 的结合使用与冲突解决
前言 在现代前端开发中,代码质量与代码风格的统一是两个非常重要的方面。良好的代码质量能减少 bug 的产生,而统一的代码风格则能提高团队协作的效率。为了实现这两个目标,我们通常会使用一些工具。 为了保证代码的可读性和维护性࿰…...
uniApp之uni-file-picker使用踩坑
标题党~也不算坑吧 就是初体验 上传是需要存储一下子的,我以为uniApp是自己免费开的服务给大家中转使用,就没管这个事,但是官网是这么说的: 就我是怎么发现的,使用了一段时间后,上传的图片都裂了ÿ…...
【C语言】。末尼
用js写一个冒泡排序 当然可以。在JavaScript中,你可以使用递归的方式来实现冒泡排序算法。这是一个简单的示例: function bubbleSort(arr) { let len arr.length; if(len < 1){ return arr; // 如果数组只有一个元素或为空…...
【鉴权】深入解析 Token:身份认证的核心技术
目录 引言一、Token 的定义与概念1.1 Token 是什么?1.2 无状态性与自包含性1.3 Token 的工作流程1.3.1 基本工作流程1.3.2 工作流程图示 二、Token 的常见用途2.1 用户身份验证2.2 授权控制2.3 防止跨站请求伪造(CSRF)2.4 跨域认证 三、Token…...
FastReport将停止 .NET Framework 上的 WebReport 更新
从2024/ 12 /1 日起,Fastreport将停止发布更新和提供对 FastReport.Web (.NET Framework) 的技术支持。该库一直是使用 Online Designer 的许多项目中报告的核心。这些更改意味着 FastReport.Web (Legacy) 库(FastReport.Net包的一部分)将不再…...
面试:TCP、UDP如何解决丢包问题
文章目录 一、TCP丢包原因、解决办法1.1 TCP为什么会丢包1.2 TCP传输协议如何解决丢包问题1.3 其他丢包情况(拓展)1.4 补充1.4.1 TCP端口号1.4.2 多个TCP请求的逻辑1.4.3 处理大量TCP连接请求的方法1.4.4 总结 二、UDP丢包2.1 UDP协议2.1.1 UDP简介2.1.2…...
在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码
在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码 在Ubuntu下安装RabbitMQ可以按照以下步骤进行:步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 更新APT索引并安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: …...
HTTPS通信和TCP通信有什么不一样
HTTPS通信和TCP通信的主要区别如下: 协议层次:HTTPS是应用层协议,建立在HTTP协议之上,并增加了SSL/TLS加密层;而TCP是传输层协议,提供可靠的数据传输服务。安全性:HTTPS通过SSL/TLS加密…...
Kafka 的一些问题,夺命15连问
kafka-中的组成员 kafka四大核心 生产者API 允许应用程序发布记录流至一个或者多个kafka的主题(topics)。 消费者API 允许应用程序订阅一个或者多个主题,并处理这些主题接收到的记录流 StreamsAPI 允许应用程序充当流处理器(s…...
unity3d————延时函数
1.public void InvokeRepeating(string methodName, float time, float repeatRate); 延迟重复执行函数 InvokeRepeating 参数一:函数名字符串 参数二:第一次执行的延迟时间 参数三:之后每次执行的间隔时间 注意: 1-1.延时函数第…...
计算机学生自我提升方法——善用搜索引擎
计算机学生自我提升方法——善用搜索引擎 在信息爆炸的时代,计算机专业的学生如何有效地自我提升?答案可能就藏在一个简单却强大的工具——搜索引擎中。搜索引擎不仅是获取知识的入口,更是解决问题的利器。下面,我将分享一些善用…...
游戏引擎学习第一天
视频参考: https://www.bilibili.com/video/BV1zGDCYHErA/ 创建一个保存项目的路径 VS的安装略过,个人自行百度 1. vs 创建第一个CMAKE的窗口项目 game.cpp 修改如下的代码 到https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-winmain 去…...
uni-app view循环绑定click和 v-if
<view class"layout-wrap-item" v-for"(item, index) in menuItems" :key"index" click"item.clickHandler" :v-if"showMenu(item)"></view> const xxx (id) > { }; // 定义菜单项数组 const menuItems …...
Redis 高并发分布式锁实战
目录 环境准备 一 . Redis 安装 二:Spring boot 项目准备 三:nginx 安装 四:Jmeter 下载和配置 案例实战 优化一:加 synchronized 锁 优化二:使用 redis 的 setnx 实现分布式锁 优化三:使用 Lua 脚本…...
关于elementui el-radio 赋值问题
今天遇到这样的问题: 点击的时候,同时选中 照抄官网! 后来发现了问题: 也就是说如果你的版本太低,就不能用value,而得用label,于是修改 <el-radio-group v-model"searchTime"&g…...
2024-11-6----Android 11(全志713m)----- 关于添加 Selinux 权限
需求 节点: /sys/devices/platform/motor0/motor_ctrl上层 APP 使用 JNI 需要对该节点进行 echo 的操作,操作失败。 添加前的验证工作 adb 进去验证下,如下图所示: 发现权限不够。su 以后再操作是OK的,如下图: 添加前的修改 为防止报权限错误,直接给777,因为该…...
shodan5(泷羽sec)
声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面,了解网络安全领域的见闻,了…...
【Linux】Ansible集中化运维工具(详解)安装、常用模块、playbook脚本
文章目录 一、Ansible安装及远程控制1、关闭防火墙和SELinux2、安装ansible3、配置SSH无密码登录1、在管理机上生成一对密钥2、将公钥下发到远程主机3、保管密钥 4、主机目录 二、常用模块1、setup模块2、copy模块3、file模块4、shell模块5、script模块6、ping模块7、group模块…...
惠州石湾DELL T130服务器黄灯不开机案例
惠州石湾一个朋友反馈一台DELL PowerEdge T130 塔式服务器故障为 通电后无法开机,前面同时亮3个故障灯。闪电灯,电压灯,高温灯 1:这种情况建议大家更换一个同型号的电源进行故障排除。 2:朋友把该服务器硬件最小化测…...
⭐SmartControl: Enhancing ControlNet for Handling Rough Visual Conditions
目录 0 Abstract 1 Motivation 2 Related Work 2.1 Text-to-Image Diffusion Model 2.2 Controllable Text-to-Image Generation 2.3 ControlNet 2.4 Control Scale Exploration 3 Method 3.1 Framework 3.2 Control Scale Predictor 3.3 Unaligned Data Constructi…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
