一文读懂eslint和prettier

news2024/10/7 14:33:57

为什么会有eslint和prettier,他们有什么作用

首先,工具的出现都是为了解决一定的问题。
团队写代码风格不一样,书写方式不一致,导致整个项目同一类型代码出现多种写法,或者不严谨、或者不美观。或者是提交git时,因为不同编辑器或者同一编辑器采用不同格式导致git上无效记录,影响代码回顾或者走查。

主要涉及两个问题:

  1. 质量问题:使用方式有可能有问题
  2. 风格问题:风格不统一

eslint和prettier就是为解决以上两个问题而出现。
eslint官网描述

目标是提供一个插件化的javascript代码检测工具

prettier官网描述

1、一个“有态度”的代码格式化工具
2、支持大量编程语言

所以,eslint和prettier的区别也就呼之欲出了

1、eslint针对的是javascript,他是一个检测工具,包含js语法以及少部分格式问题,在eslint看来,语法对了就能
保证代码正常允许,格式问题属于其次;
2、prettier属于格式化工具,它看不惯格式不统一,所以它就把eslint没干好的事接着干,另外,prettier支持
包含js在内的**多种语言**

总结:eslint和prettier这俩兄弟一个保证js代码质量,一个保证代码美观。

使用步骤

1. 首先在项目根目录下执行eslint --init,按照提示初始化,自动生成.eslintrc.json文件
2. 故意写错一个,将单引号改为双引号,文件内没有提示报红,但是执行yarn lint 或控制台执行 npx eslint,显示错误
在安装eslint插件前
3. 为了能够在书写代码时就知道格式不对,那么这里就需要用到vscode插件eslint了,安装扩展插件eslint后,文件内自动标红
安装eslint插件后
4. 此时,如果.eslintrc.json有配置修正项(如rules: {“quotes”: [“error”, “single”]}),则使用eslint插件可以进行格式化修正。将双引号自动修复成单引号
在这里插入图片描述
5. 当然,eslint并不能格式化类似下面这种情况,而这里就是prettier发挥作用的主战场了
在这里插入图片描述
6. eslint搭配prettier使用步骤
1、首先安装插件eslint-config-prettier和eslint-plugin-prettier;
2、其次配置.eslintrc.json文件,extends: [“plugin:prettier/recommended”],如果有其他扩展,则"plugin:prettier/recommended"放在最后
3、新增.prettierrc文件,可以新增规则,对.eslintrc.json的rules进行覆盖。
这里的执行逻辑顺序是:eslint会首先读extends的规则,这个时候遇到了最后配置的plugin:prettier/recommended,而这个插件又会先读本地配置的.prettierrc文件再读取prettier自己内部设置的配置,最后读.eslintrc.json的rules配置。所以.eslintrc.json的rules优先级最高,可以覆盖.prettierrc的部分配置。
优先级:本地.eslintrc.json的rules > 本地.prettierrc>prettier内部配置>extends其他配置>eslintrc内部默认配置
7. prettier配置完成后,再通过eslint插件对文件进行格式化,如下图已经能够正常格式化了。由此可知,对eslint进行扩展之后,prettier能够对js代码做的事,eslint也能,只要你制定好规则以及对应的处理
在这里插入图片描述
到这里,已经能够对js代码进行代码质量以及代码风格进行处理了。对于其他语言的处理,可以安装vscode插件prettier。如下图,对html文件进行格式化
格式化前:
html格式化前
格式化后:
在这里插入图片描述
html格式化后
问题:如果.eslintrc.json和.prettierrc配置冲突怎么办
最好的办法就是删除.eslintrc.json中与.prettierrc冲突的rules,既然用了prettier,那它能发挥作用的规则就让它接管吧。其实,有些情况下,也只能让prettier接管,否则无论你怎么修改,都会有一方报错。如下:
.prettierrc配置

{"singleQuote": true}

.eslintrc.json配置

{
	"rules": {
		"quotes": [
	      "error",
	      "double"
	    ]
    }
}

则有双引号时,prettier报错有双引号
没双引号时,eslint报错
在这里插入图片描述
然后,这里有个很神奇的现象,就是如果.eslintrc.json配置如上,则无论.prettierrc配置singleQuote为true或false,使用eslint插件进行格式化时,双引号和单引号会循环切换。即格式化第一次,会将单引号变成双引号,继续格式化,又会将双引号变成单引号。

总结:eslint和prettier配合使用很赞,但需要注意他们冲突时的解决,以prettier为先,否则可能一直报错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169398.html

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

相关文章

秒杀功能、高并发系统关注的问题、秒杀系统设计-59

一:秒杀 1.1 特点 秒杀具有瞬间高并发的特点,针对这一特点,必须要做限流 异步 缓存 ( 页面静态化)。 1.2 限流方式 前端限流,一些高并发的网站直接在前端页面开始限流,例如:小…

Python 生成 svg 图片,一篇博客带你掌握 Python 与 svg 之间的操作

python svgwritePython 操作 SVG 图片的库清单svgwrite 库svgwrite 库其他图形绘制储备反爬技术 svgwrite 生成一个手机号Python 操作 SVG 图片的库清单 在 Python 中,可以使用以下几种库来生成 SVG 图片: svgwrite:这是一个简单易用的 Pyt…

民生银行联手火山引擎,一场“1+1>2”的金融数字化征程

数字化时代下,信息成为企业生长的升维秘钥。管理学者德鲁克在《21世纪的管理挑战》一书中指出,我们正经历着一场信息革命。其中特别提出,不是某种软硬件的革命,而是“信息”被使用和利用的方式转变了。近年来,金融行业…

【终极UI/UX工具包】上海道宁与Infragistics助力您简化程序开发,​创建精美应用程序

​​​​​​​​​​​​​​ Infragistics Ultimate是 开发者的UI/UX工具包 可以简化程序开发 加速从设计到代码的应用程序创建 为Web、移动和桌面 创建精美应用程序所需的一切帮助 Infragistics Ultimate附带 完整的企业级.NET和JavaScript图表 网格和UI组件以及可用…

SQL--DML

目录 1、添加数据(insert) 1. 给指定字段添加数据 2. 给全部字段添加数据 3. 批量添加数据 2、修改数据(update) 3、删除数据(delete) DML英文全称是Data Manipulation Language(数据操作语言)&…

AIParsing(TIP2022)-人体解析论文阅读

文章目录解决问题算法人体解析AIParsingFPN检测头边缘引导解析头实验结论论文: 《AIParsing: Anchor-Free Instance-Level Human Parsing》github: https://github.com/31sy/AIParsing解决问题 目前SOTA实例级人体解析模型使用二阶段基于anchor的检测器…

使用 curl multi interface 编写的高性能封装类和示例

CurlMultiDemo 使用 libCurl 的 Multi Interface 的一个简单封装类,支持功能: 单线程 纯异步 的 Get/Post 支持极高的性能(使用 POST 上传 600 文件,仅耗时4~6秒) 使用方式: 1.编译或下载 libcurl 库, 我采用的是 vcpkg2.搭建或找一个支持 MultiPart 上传文件的服务器, 如没…

linux下安装python环境 + Faster-Rcnn环境配置

目录 在Windows上配置环境 在Ubuntu上配置环境 装虚拟机 全屏问题 中文输入 --- 搜狗输入法 将Windows上文件传输给ubuntu --- winscp 分配内存给根目录 深夜惊魂,ubuntu根目录空间不足 - 知乎 给conda或者pip换源 安装anacondapythonpycharm 下载安装…

Spirng bean

spring bean 作用域(scope) 作用域描述singleton单例模式,每一个spring context中只有一个实例prototype每次调用一个getBen方法都会产生一个新的对象request每个request请求产生一个实例session每个htttp session中产生一个实例application…

Qt之基于Graphics View实现Mesh网络拓扑图

Mesh是一种多节点、无中心、自组织的无线多跳通信网络,也就是网状结构网络。网络中所有的节点都互相连接,每个节点拥有多条连接通道,所有的节点之间形成一个整体的网络。 一.效果 Mesh网络拓扑形态并不固定,完全依据各节点之间的信道质量自适应变化。这里演示了四个节点四…

商场室内地图导航如何实现,便捷、低成本智慧商业综合体一站式解决方案

试想一下,在大型商场内,顾客结队购物,同伴走散或者儿童走失,顾客不知道自己和同伴的位置,这是多么糟糕的事情。的确,在室内迷路,是一件令人很头疼的事情,如何把室外导航这种完整度高…

架构篇 -- 搭建gitlab ci远程自动化部署

001.后端服务自动化部署 本文将以pass-runtime服务为例子,进行介绍,有相关自动部署需求,可参考此文档。 最近换了份工作公司要求使用gitlab ci去部署,原来比较习惯使用jenkins,但是还是要适应新挑战,看了网…

大语言模型集成工具 LangChain

大语言模型集成工具 LangChain LangChain 介绍 介绍: 通过可组合性使用大型语言模型构建应用程序【背景】大型语言模型 (LLM) 正在成为一种变革性技术,使开发人员能够构建他们以前无法构建的应用程序,但是单独使用这些 LLM 往往不足以创建一…

内存映射(Linux)

文章目录概念 内存映射(Memory-mapped I/O)是将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件。 API 内存映射相关系统调用,使用man 2 mmap查看帮助 void *mmap(void *addr, size_t length, int prot, int flags, …

服务端大量处于TIME_WAIT和CLOSE_WAIT状态连接的原因

服务端大量处于TIME_WAIT和CLOSE_WAIT状态连接的原因1.服务端大量处于TIME_WAIT状态的连接原因?1.HTTP没有使用长连接2.HTTP长连接超时3.HTTP长连接的请求数量达到上限TIME_WAIT状态连接过多的危害?2.服务器大量处于CLOSE_WAIT状态的连接原因&#xff1f…

网络流量监控系统为企业SAP接口性能分析

前言 某汽车总部已部署NetInside网络流量监控系统,使用流量分析系统提供实时和历史原始流量,重点针对SAP系统性能进行分析,以供安全取证、应用事务分析、网络质量监测以及深层网络分析。 本次分析报告包含:SAP接口性能分析案例。…

TSD simple(0)时序数据库简介

时间序列数据库:Time Series Database 时序数据库全称为时间序列数据库。 时间序列数据:带时间标签的数据 时间序列数据库是用于存储和管理时间序列数据的专业化数据库,具备写多读少、冷热分明、高并发写入、无事务要求、海量数据持续写入等…

LeetCode155-最小栈

题目 解题 这道题本来是打算用栈然后加一个标记位,这个标记位存最小的数,但是之后发现解决不这种情况: 1、弹出以后,这个标记怎么办,没法回溯 那么就得换一个数据结构,比如额外放一个线性表,里…

【电子学会】2022年12月图形化四级 -- 求最大公约数

求最大公约数 如果6除以2的余数是0,那么我们就说2是6的约数。4除以4的余数是0,4也是4的约数。同理可以求出,4的约数有1、2和4,6的约数有1、2、3和6。两个数的最大公约数是指两个数相同的约数中最大的那一个,如4和6两个数的最大公约数是2。 辗转相除法求最大公约数的步骤…

Windows部署定时任务,每天定期执行手机机型爬取

项目背景 有一个手机机型自动更新获取的需求,在我写好相关的爬虫后,需要将爬虫部署,并且需要配置定时任务每天定期执行。之前在Mac上开发,现在部门给配了一台windows定期执行。 环境准备 A、安装ChromeDriver 1、我是通过Chro…