【VUE3】Eslint 与 Prettier 的配置
目录
0 前言
1 VSCode 中的 Eslint 与 prettier 插件
2 两种方案
3 eslint.config.js
4 eslint-plugin-prettier 插件
5 eslint-config-prettier 插件
6 安装插件命令
7 其他配置
8 参考资料
0 前言
黑马程序员视频地址:160-Vue3大事件项目-ESlint配合Prettier完成代码风格配置
关于 eslint 与 prettier 的配置,由博主查阅资料自行整理及实验得出的结论,如有错误请告知博主,十分感谢!!
1 VSCode 中的 Eslint 与 prettier 插件
VSCode中的这两个插件的作用有二,第一:自动检查代码,第二:在保存时进行自动修复
关于VSCode配置的文件 settings.json :
黑马程序员视频中的写法已经过时:
"editor.codeActionsOnSave": {"source.fixAll": true},
在新版VSCode中,source.fixAll的值由布尔类型变成了字符串类型:
| 版本 | 需要无条件执行所有修复操作(如团队统一强制格式化) | 完全禁用保存时的自动修复(如手动处理复杂格式问题) | 精细化控制修复范围(如仅启用 ESLint 和 Prettier 的修复) |
| 新版 | always | never | explicit |
| 旧版 | true | false | 无 |
除此之外,新版本中增加了精细化配置,如:source.fixAll.eslint
因此,代码修改为:
// 当保存的时候,eslint自动帮我们修复错误"editor.codeActionsOnSave": {"source.fixAll.eslint": "explicit"},
注意:source.fixAll.eslint 的默认值就是 explicit ,也就是说并不需要显示配置也可以执行自动修正,但是如果想要禁止他,则可以设置为never
这串代码是为了防止与 eslint、prettier 冲突,但是新版本中,该属性的默认值就是false,所以无需配置:
// 保存代码,不自动格式化"editor.formatOnSave": false,
总结:新版本 VSCode 无需配置 settings.json 文件
2 两种方案
目前有两种方案
第一种:让 eslint 与 prettier 执行各自格式化代码
所需插件:eslint、prettier、VScode 中的 eslint 和 prettier 、eslint-config-prettier/skip-formatting
原理:
VSCode中的 eslint 默认依据自己的规则(可以显式写在 eslint.config.js 中)实时检查代码的正确性以及风格,会实时标红报错,且在保存文件时会自动修正
VSCode 中的 prettier 插件默认并不会实时提示,而是在保存文件时依据自己的规则(在 .prettierrc.json 中)进行自动修正代码风格
注意:二者同时使用可能会造成格式化冲突,因此,create-vue 脚手架在 eslint.config.js 中帮我们导入了一个插件,用来跳过 esliint 的格式化风格:
// eslint.config.jsimport skipFormatting from '@vue/eslint-config-prettier/skip-formatting'export default defineConfig([skipFormatting,
])
配置步骤:
1. 安装 ESLint 与 Prettier 插件( 如果按照 1.2 的步骤进行,即执行了 pnpm i,则已经安装了 ESLint 与 Prettier 插件,否则还应手动安装)
2. 安装 VSCode 中的 eslint 与 prettier 插件
3. 在 .prettierrc.json 文件中配置想要的规则(该文件的最上方提供了 参考手册 以及默认配置)
第二种:将 prettier 的规则添加到 eslint 中,让 eslint 执行 (黑马程序员视频中的方法)
所需插件:eslint、prettier、VSCode 中的 eslint 插件、eslint-plugin-prettier、eslint-config-prettier
详细步骤见下文:
下文中提供了两种方法,但其实本质都一样
第一种:使用基础的 eslint-plugin-prettier 与 eslint-config-prettier
第二种:使用 eslint-plugin-prettier 中的推荐规则集包,即可自动添加 eslint-plugin-prettier 与 eslint-config-prettier
由于本质是 eslint 使用 prettier 的格式化规则,因此规则需要写在 .prettierrc.json 中,黑马程序员的规则因此也需要写在该文件中,如:
// .prettierrc.json{singleQuote: true, // 单引号semi: false, // 无分号printWidth: 80, // 每行宽度至多80字符trailingComma: 'none', // 不加对象|数组最后逗号endOfLine: 'auto' // 换行符号不限制(win mac 不一致)
}
但是这样写是错误的,因为在新版中,需要给属性名加双引号,如下:
{"$schema": "https://json.schemastore.org/prettierrc","singleQuote": true,"semi": false,"printWidth": 80,"trailingComma": "none","endOfLine": "auto"
}
注意:这种方案需要将脚手架自动导入的插件注释掉,即@vue/eslint-config-prettier/skip-formatting,或者将新的配置写在最后,以此来覆盖掉此插件
3 eslint.config.js
扁平配置(eslint.config.js)的版本时间线
8.21.0 版本(2022 年 9 月): 官方首次引入扁平配置格式(eslint.config.js),作为可选的新配置方式,此时旧的 .eslintrc 格式仍为默认,用户可自主选择是否迁移。
9.0.0 版本(主要版本更新): 官方将扁平配置设为默认配置格式,同时弃用旧的 .eslintrc 格式(不再自动搜索旧格式文件)。若需继续使用旧格式,需显式设置环境变量 ESLINT_USE_FLAT_CONFIG=false。
黑马程序员使用的配置是老版本的,此处将教授如何进行新版本的配置
4 eslint-plugin-prettier 插件
此插件的作用是将 Prettier 的格式化规则作为 ESLint 的规则来运行,配置如下:
// eslint.config.js// ...import prettierPlugin from 'eslint-plugin-prettier'export default defineConfig([// ...{plugins: {// 插件名作为键,值为插件模块(通过 import 引入)prettier: prettierPlugin,},rules: {// 使用插件提供的规则(格式:`插件名/规则名`)'prettier/prettier': 'error',},},])
以上为基础用法,官方还提供了一个推荐规则集,配置方法如下:
// eslint.config.jsimport eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'export default defineConfig([// ...eslintPluginPrettierRecommended,])
这将:
• 启用规则。prettier/prettier
• 禁用此插件有问题的 arrow-body-style and prefer-arrow-callback 规则 - 请参阅下面的原因。
• 启用配置 eslint-config-prettier,这将关闭与 Prettier 冲突的 ESLint 规则。
(这是从GitHub - prettier/eslint-plugin-prettier:用于 Prettier 格式的 ESLint 插件截来的)
5 eslint-config-prettier 插件
该插件的作用是关闭所有与 Prettier 冲突的 ESLint 规则
除了上述的规则集外,也可以选择手动配置 eslint-config-prettier 插件
常与 1.3.4 中的第一种基础用法相配合,即关闭 eslint 规则,并使用 prettier 规则
import eslintConfigPrettier from "eslint-config-prettier/flat";export default [eslintConfigPrettier,
];
解答:eslint-config-prettier/flat 中的 flat 是专门为扁平配置(eslint.config.js)提供的版本
6 安装插件命令
由此可见,无论是选择 1.3.2 中的第二种方法还是 1.3.2 中的第一种方法与 1.3.3 所结合的方案,都需要安装 eslint-plugin-prettier 与 eslint-config-prettier 插件
pnpm install --save-dev eslint-plugin-prettier eslint-config-prettier
7 其他配置
在黑马程序员的视频中,还提供了两种额外配置,即
-
vue组件名称多单词组成(忽略index.vue)
-
props解构(关闭)
直接在 eslint.config.js 中配置即可,配置位置如下:
// eslint.config.jsimport { defineConfig, globalIgnores } from 'eslint/config'
import globals from 'globals'
import js from '@eslint/js'
import pluginVue from 'eslint-plugin-vue'
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'export default defineConfig([{name: 'app/files-to-lint',files: ['**/*.{js,mjs,jsx,vue}'],},globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),{languageOptions: {globals: {...globals.browser,},},},js.configs.recommended,...pluginVue.configs['flat/essential'],skipFormatting,{rules: {// 使用插件提供的规则(格式:`插件名/规则名`)'vue/multi-word-component-names': ['warn',{ignores: ['index'] // vue组件名称多单词组成(忽略index.vue)}],'vue/no-setup-props-destructure': ['off'], // 关闭 props 解构的校验// 💡 添加未定义变量错误提示,create-vue@3.6.3 关闭,这里加上是为了支持下一个章节演示。'no-undef': 'off'}},
])
8 参考资料
ESLint
Prettier
GitHub - eslint/eslint: Find and fix problems in your JavaScript code.
GitHub - prettier/prettier: Prettier is an opinionated code formatter.
GitHub - prettier/eslint-plugin-prettier: ESLint plugin for Prettier formatting
GitHub - prettier/eslint-config-prettier: Turns off all rules that are unnecessary or might conflict with Prettier.
相关文章:
【VUE3】Eslint 与 Prettier 的配置
目录 0 前言 1 VSCode 中的 Eslint 与 prettier 插件 2 两种方案 3 eslint.config.js 4 eslint-plugin-prettier 插件 5 eslint-config-prettier 插件 6 安装插件命令 7 其他配置 8 参考资料 0 前言 黑马程序员视频地址:160-Vue3大事件项目-ESlint配合P…...
蓝桥杯C++组算法知识点整理 · 考前突击(上)【小白适用】
【背景说明】本文的作者是一名算法竞赛小白,在第一次参加蓝桥杯之前希望整理一下自己会了哪些算法,于是有了本文的诞生。分享在这里也希望与众多学子共勉。如果时间允许的话,这一系列会分为上中下三部分和大家见面,祝大家竞赛顺利…...
springboot调用python文件,python文件使用其他dat文件,适配windows和linux,以及docker环境的方案
介绍 后台是用springboot技术,其他同事做的算法是python,现在的需求是springboot调用python,python又需要调用其他的数据文件,比如dat文件,这个文件是app通过蓝牙获取智能戒指数据以后,保存到后台…...
GSO-YOLO:基于全局稳定性优化的建筑工地目标检测算法解析
论文地址:https://arxiv.org/pdf/2407.00906 1. 论文概述 《GSO-YOLO: Global Stability Optimization YOLO for Construction Site Detection》提出了一种针对建筑工地复杂场景优化的目标检测模型。通过融合全局优化模块(GOM)、稳定捕捉模块(SCM)和创新的AIoU损失函…...
Python 中使用单例模式
有这么一种场景,Web服务中有一个全局资源池,在需要使用的地方就自然而言引用该全局资源池即可,此时可以将该资源池以单例模式实现。随后,需要为某一特殊业务场景专门准备一个全局资源池,于是额外复制一份代码新建了一个…...
系统思考—提升解决动态性复杂问题能力
感谢合作伙伴的信任推荐! 客户今年的人才发展重点之一,是提升管理者应对动态性、复杂性问题的能力。 在深入交流后,系统思考作为关键能力模块,最终被纳入轮训项目——这不仅是一次培训合作,更是一场共同认知的跃迁&am…...
Java基础 - 反射(2)
文章目录 示例5. 通过反射获得类的private、 protected、 默认访问修饰符的属性值。6. 通过反射获得类的private方法。7. 通过反射实现一个工具BeanUtils, 可以将一个对象属性相同的值赋值给另一个对象 接上篇: 示例 5. 通过反射获得类的private、 pro…...
Python proteinflow 库介绍
ProteinFlow是一个开源的Python库,旨在简化蛋白质结构数据在深度学习应用中的预处理过程。以下是其详细介绍: 功能 数据处理:支持处理单链和多链蛋白质结构,包括二级结构特征、扭转角等特征化选项。 数据获取:能够从Protein Data Bank (PDB)和Structural Antibody Databa…...
P1162 洛谷 填涂颜色
题目描述 思考 看数据量 30 而且是个二维的,很像走迷宫 直接深搜! 而且这个就是搜连通块 代码 一开始的15分代码,想的很简单,对dfs进行分类,如果是在边界上,就直接递归,不让其赋值,…...
docker安装nginx,基础命令,目录结构,配置文件结构
Nginx简介 Nginx是一款轻量级的Web服务器(动静分离)/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强. 🔗官网 docker安装Nginx 🐳 一、前提条件 • 已安装 Docker(dock…...
SQLI漏洞公开报告分析
文章目录 1. 闭合 )2. 邀请码|POST参数|时间盲注 | **PostgreSQL**3. POST|order by参数|布尔盲注|Oracle4. SOAP请求|MSSQL|布尔盲注5. MySQL 时间盲注漏洞6. GET|普通回显注入7. ImpressCMS 1.4.2 | CVE | POST | 布尔盲注8. Mysql | post | 布尔/时间盲注9. 登录口 | post |…...
SpringBoot项目部署之启动脚本
一、启动脚本方案 1. 基础启动方式 1.1 直接运行JAR java -jar your-app.jar --spring.profiles.activeprod优点:简单直接,适合快速测试缺点:终端关闭即终止进程 1.2 后台运行 nohup java -jar your-app.jar > app.log 2>&1 &…...
用Django和AJAX创建一个待办事项应用
用Django和AJAX创建一个待办事项应用 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 用Django和AJAX创建一个待办事项应用让我们创建一个简单的 Django 项目,其中包含不同类型的 A…...
JavaScript:游戏开发的利器
在近年来的科技迅速发展中,JavaScript 已逐渐成为游戏开发领域中最受欢迎的编程语言之一。它的跨平台特性、广泛的社区支持、丰富的库和框架使得开发者能够快速、有效地创建各种类型的游戏。本文将深入探讨 JavaScript 在游戏开发中的优势。 一、跨平台支持 JavaSc…...
C语言今天开始了学习
好多年没有弄了,还是捡起来弄下吧 用的vscode 建议大家参考这个配置 c语言vscode配置 c语言这个语言简单,但是今天听到了一个消息说python 不知道怎么debug。人才真多啊...
Elasticsearch 系列专题 - 第五篇:集群与性能优化
随着数据量和访问量的增长,单节点 Elasticsearch 已无法满足需求。本篇将介绍集群架构、性能优化方法以及常见故障排查,帮助你应对生产环境中的挑战。 1. 集群架构 1.1 节点角色(Master、Data、Ingest 等) Elasticsearch 集群由多个节点组成,每个节点可扮演不同角色: M…...
鸿蒙NEXT开发Preferences工具类(ArkTs)
import { AppUtil } from ./AppUtil; import dataPreferences from ohos.data.preferences; export const DEFAULT_PREFERENCE_NAME: string "SP_HARMONY_UTILS_PREFERENCES"; // Preferences实例的名称。/*** Preferences工具类* author CSDN-鸿蒙布道师* since 20…...
电商素材革命:影刀RPA魔法指令3.0驱动批量去水印,实现秒级素材净化
本文 去除水印实操视频展示电商图片水印处理的困境影刀 RPA 魔法指令 3.0 强势登场利用魔法指令3.0两步实现去除水印操作关于影刀RPA 去除水印实操视频展示 我们这里选择了4张小红书里面比较帅气的图片,但凡用过小红书的都知道,小红书右下角是会有小…...
前端面试题(七):什么是vuex,请解释一下它在Vue中的作用
Vuex 是一个专门为 Vue.js 应用程序开发的状态管理库。它可以集中管理应用的所有状态,并保证状态以一种可预测的方式发生变化。简单来说,Vuex 用来管理 Vue 应用中的数据(即状态),使得数据的传递和共享更加清晰和可靠&…...
笔记:头文件与静态库的使用及组织方式
笔记:头文件与静态库的使用及组织方式 1. 头文件的作用 接口声明:提供函数、类、变量等标识符的声明,供其他模块调用。编译依赖:编译器需要头文件来验证函数调用和类型匹配。避免重复定义:通过包含保护(如…...
ubuntu,react的学习(1)
在此目录下,开启命令行 /home/kt/react 如下操作 tkt4028:~/react$ npm create vitelatest task-manager -- --template react Need to install the following packages: create-vite6.3.1 Ok to proceed? (y) y> npx > cva task-manager --template react…...
【QT】QTreeWidgetItem的checkState/setCheckState函数和isSelected/setSelected函数
目录 1、函数原型1.1 checkState/setCheckState1.2 isSelected/setSelected2、功能用途3、示例QTreeWidget的checkState/setCheckState函数和isSelected/setSelected这两组函数有着不同的用途,下面具体说明: 1、函数原型 1.1 checkState/setCheckState Qt::CheckState QTr…...
CompletableFuture 和 List<CompletableFuture> allOf() join() get() 使用经验
CompletableFuture<Map<Menu, Map<IntentDetail, Double>>> xxx CompletableFuture.supplyAsync(() -> {Map<Menu, Map<IntentDetail, Double>> scores new ConcurrentHashMap<>();// 存储结果scores.computeIfAbsent(menu, k -> n…...
CExercise_09_结构体和枚举_2VS的Debug模式查看它的内存布局,采用结构体数组的方式存储信息,调用函数打印结构体数组.
题目: 下面结构体类型的变量的内存布局是怎样的?请使用VS的Debug模式查看它的内存布局 typedef struct stundent_s {int number;char name[25];char gender;int chinese;int math;int english; } Student;// 结构体对象的声明和初始化 Student s1 { 1, …...
SSRF漏洞技术解析与实战防御指南
一、SSRF漏洞简介 服务端请求伪造(Server-Side Request Forgery, SSRF) 是一种攻击者通过操控服务端发起非预期网络请求的安全漏洞。攻击者利用目标服务器的权限,构造恶意请求访问内网资源、本地系统文件或第三方服务,可能导致…...
CVA6:支持 Linux 的 RISC-V CPU CORE-V
RISC-V 是一种开源的可扩展指令集架构 (ISA),在过去几年中广受欢迎。RISC-V 的主要特性之一是它采用整体架构中性设计,支持浮点运算、加载存储架构、符号扩展加速和多路复用器简化。这使得 RISC-V 成为 FPGA 上软处理器的经济实惠的选择。自 RISC-V ISA …...
水文-用 Coze 工作流打造你的自媒体写作工厂
零代码水文神器:用 Coze 工作流打造你的自媒体写作工厂 作为一个每天被 KPI 追着跑的自媒体运营人,你是不是也常常在想: “这篇文章换个标题就能发第二遍,能不能自动来?” 现在,用 Coze 工作流,…...
轻奢宅家|约克VRF带你畅享舒适居家体验
下班回到家最期待什么?当然是一阵阵沁人心脾的舒适感扑面而来啦! 想要从头到脚都舒服自在?答案就在眼前——就是它!约克VRF中央空调! 约克VRF中央空调独特的臻静降噪技术,让空调运行音轻…...
uniapp微信小程序图片生成水印
整体思路: 用户通过uni.chooseImage选择图片后,获得图片文件的path和size。通过path调用uni.getImageInfo获取图片信息,也就是图片宽高。图片宽高等比缩放至指定大小,不然手机处理起来非常久,因为手机随便拍拍就很大。…...
不用额外下载jar包,idea快速查看使用的组件源码
以nacos为例子,在idea中引入了nacos依赖,就可以查看源码了。 2. idea选择open(不关闭项目直接选择file-open也可以), 在maven的仓库里找到对应的包,打开 2.idea中选择 jar包,选择 add as library 3.这样j…...
