当前位置: 首页 > news >正文

Vue3 + JS项目配置ESLint Pretter

前言

如果在开发大型项目  同时为多人协作开发  那么 ESLint 在项目中极为重要  在使用 ESLint 的同时 也需要使用 Pretter插件 统一对代码进行格式化 二者相辅相成 缺一不可

1. 安装 VsCode 插件

在 VsCode 插件市场搜索安装 ESLint 和 Pretter

2. 安装依赖

这里直接在 package.json 内写入   之后使用 npm 等包管理器直接 install 安装即可

 "devDependencies": {"@vue/eslint-config-prettier": "^9.0.0","eslint": "^8.57.0","eslint-plugin-import": "^2.29.1","eslint-plugin-prettier": "^5.2.1","eslint-plugin-simple-import-sort": "^12.1.1","eslint-plugin-vue": "^9.23.0","eslint-plugin-vue-scoped-css": "^2.8.1","prettier": "^3.2.5","vite-plugin-eslint": "^1.8.1",}

以上依赖包具体作用如下  感兴趣可以了解:

@vue/eslint-config-prettier

这是一个 ESLint 配置,专为 Vue 项目整合 Prettier 格式化而设计,确保 ESLint 规则不会与 Prettier 的格式化规则发生冲突。

eslint

ESLint 的核心库,用于识别和报告 JavaScript 代码中的模式匹配,帮助维护代码质量和风格一致性。

eslint-plugin-import

提供了一系列规则,用于检查 ES6+ 的 import/export 语法,帮助管理模块的导入和避免文件路径错误、拼写错误等问题。

eslint-plugin-prettier

将 Prettier 作为 ESLint 规则运行,可以在使用 ESLint 的同时应用 Prettier 的代码格式化功能。

eslint-plugin-simple-import-sort

用于自动排序 import 语句,以保持代码的整洁和一致性,减少合并时的冲突。

eslint-plugin-vue

官方 Vue.js 的 ESLint 插件,提供了适用于 Vue 文件的 ESLint 规则,帮助维护 .vue 文件中的 JavaScript 和模板代码的质量。

prettier

一个流行的代码格式化工具,用于自动格式化代码,使其符合一致的风格。

vite-plugin-eslint

用于将 ESLint 集成到 Vite 构建流程中,使得在使用 Vite 开发 Vue 项目时,可以实时进行代码质量检查。

 

eslint-plugin-vue-scoped-css

这个插件专门用于检查Vue单文件组件中的scoped CSS,确保样式的作用域正确无误。

3. 配置 VsCode 规则

1. 在项目根目录创建 .vscode 文件夹

如果你的项目使用 VsCode 打开 那这个文件夹应该是自动生成的

2. 创建规则文件

在 .vscode 文件夹里创建 extensions.json 和 settings.json

此时 您的文件结构理应如此

3. 编辑规则文件

extensions.json

主要作为实时检查和修正代码问题使用

需配合 VsCode 中 ESLint 扩展和 .eslintrc 配置文件使用

{"recommendations": ["dbaeumer.vscode-eslint"]
}

settings.json

主要作为对指定文件进行格式化 从而符合预定标准

{"editor.formatOnType": true, // 控制编辑器在键入一行后是否自动格式化该行"editor.formatOnSave": true, // 在保存时格式化文档"eslint.codeAction.showDocumentation": {"enable": true // 显示相关规则的文档链接},"editor.codeActionsOnSave": {"source.fixAll.eslint": "explicit" // 保存文件时 应用所有 ESLint 的自动修复},"files.eol": "\n", // 设置文件的结束行字符为 Unix 风格的换行符"editor.tabSize": 2, // 设置制表符大小为2个空格"eslint.format.enable": true, // 这允许 ESLint 作为格式化工具"eslint.validate": ["javascript", "javascriptreact", "vue"],"[vue]": {"editor.formatOnSave": true,"editor.defaultFormatter": "dbaeumer.vscode-eslint"},"[javascriptreact]": {"editor.formatOnSave": true,"editor.defaultFormatter": "dbaeumer.vscode-eslint"},"[javascript]": {"editor.formatOnSave": true,"editor.defaultFormatter": "dbaeumer.vscode-eslint"}
}

4. 配置ESLint

在项目根目录创建 .eslintrc

.eslintrc

代码最后注释掉的 overrides 数组为对 Vue 组件及命名规范

建议打开并使用

{"root": true,"extends": ["plugin:vue/vue3-recommended","plugin:vue-scoped-css/base","plugin:prettier/recommended","plugin:vue/vue3-essential","eslint:recommended","@vue/eslint-config-prettier/skip-formatting"],"env": {"browser": true, // 浏览器全局变量"node": true, // Node.js全局变量和作用域"jest": true, // Jest全局变量"es6": true // 启用ES6的特性},"globals": {"defineProps": "readonly", // 将defineProps定义为全局只读"defineEmits": "readonly" // 将defineEmits定义为全局只读},"plugins": ["vue", // 使用Vue插件"simple-import-sort" // 使用simple-import-sort插件进行导入排序],"parserOptions": {"sourceType": "module", // 指定来源的类型,是模块"ecmaFeatures": {"jsx": true // 启用JSX}},"settings": {"import/extensions": [".js", ".jsx"] // 为导入语句指定文件扩展名},"rules": {"no-console": "off", // 关闭禁止console规则"no-continue": "off", // 关闭禁止continue语句规则"no-restricted-syntax": "off", // 关闭限制特定语法规则"no-plusplus": "off", // 允许使用++操作符"no-param-reassign": "off", // 关闭禁止对函数参数重新赋值规则"no-shadow": "off", // 关闭变量声明覆盖外层作用域变量规则"guard-for-in": "off", // 关闭需要在for-in循环中有if语句的规则"import/extensions": "off", // 关闭导入文件需包含文件后缀规则"import/no-unresolved": "off", // 关闭导入路径错误检查"import/no-extraneous-dependencies": "off", // 关闭禁止未列在package.json的依赖导入规则"import/prefer-default-export": "off", // 关闭优先使用默认导出的规则"import/first": "off", // 关闭所有导入语句之前不能有执行代码规则"no-unused-vars": ["error", // 启用未使用变量错误提示{"argsIgnorePattern": "^_", // 忽略以下划线开头的参数"varsIgnorePattern": "^_" // 忽略以下划线开头的变量}],"no-use-before-define": "off", // 关闭禁止在声明之前使用变量或函数规则"class-methods-use-this": "off", // 关闭类方法必须使用this规则"simple-import-sort/imports": "error", // 对导入语句进行排序"simple-import-sort/exports": "error" // 对导出语句进行排序}// "overrides": [//   {//     "files": ["*.vue"],//     "rules": {//       "vue/component-name-in-template-casing": [2, "kebab-case"], // 组件名必须是kebab-case//       "vue/require-default-prop": 0, // 关闭属性必须有默认值规则//       "vue/multi-word-component-names": 0, // 关闭组件名必须为多单词规则//       "vue/no-reserved-props": 0, // 关闭禁止使用保留字作为组件属性规则//       "vue/no-v-html": 0, // 关闭禁止使用v-html指令规则//       "vue-scoped-css/enforce-style-type": ["error", { "allows": ["scoped"] }] // 强制使用scoped样式//     }//   }// ]
}

5. 配置 Prettier

在项目根目录创建 .prettierrc.js

.prettierrc.js

export default {// 一行最多 120 字符..printWidth: 120,// 使用 2 个空格缩进tabWidth: 2,// 不使用缩进符,而使用空格useTabs: false,// 行尾需要有分号semi: true,// 使用单引号singleQuote: true,// 对象的 key 仅在必要时用引号quoteProps: 'as-needed',// jsx 不使用单引号,而使用双引号jsxSingleQuote: false,// 末尾需要有逗号trailingComma: 'all',// 大括号内的首尾需要空格bracketSpacing: true,// jsx 标签的反尖括号需要换行jsxBracketSameLine: false,// 箭头函数,只有一个参数的时候,也需要括号arrowParens: 'always',// 每个文件格式化的范围是文件的全部内容rangeStart: 0,rangeEnd: Infinity,// 不需要写文件开头的 @prettierrequirePragma: false,// 不需要自动在文件开头插入 @prettierinsertPragma: false,// 使用默认的折行标准proseWrap: 'preserve',// 根据显示样式决定 html 要不要折行htmlWhitespaceSensitivity: 'css',// vue 文件中的 script 和 style 内不用缩进vueIndentScriptAndStyle: false,// 换行符使用 lfendOfLine: 'lf',
};

至此 所有配置结束

但需要注意的是 此时您的项目可能会各种红线

执行如下命令即可对所有文件执行格式化操作

npm run lint --fix

相关文章:

Vue3 + JS项目配置ESLint Pretter

前言 如果在开发大型项目 同时为多人协作开发 那么 ESLint 在项目中极为重要 在使用 ESLint 的同时 也需要使用 Pretter插件 统一对代码进行格式化 二者相辅相成 缺一不可 1. 安装 VsCode 插件 在 VsCode 插件市场搜索安装 ESLint 和 Pretter 2. 安装依赖 这里直接在 pac…...

JavaScript (十四)——JavaScript typeof和类型转换

目录 JavaScript typeof, null, 和 undefined typeof 操作符 null undefined undefined 和 null 的区别 JavaScript 类型转换 JavaScript 数据类型 JavaScript 类型转换 将数字转换为字符串 将布尔值转换为字符串 将日期转换为字符串 将字符串转换为数字 一元运算符…...

CTF-web 基础

网络协议 OSI七层参考模型:一个标准的参考模型 物理层 网线,网线接口等。 数据链路层 可以处理物理层传入的信息。 网络层 比如IP地址 传输层 控制传输的内容的传输,在传输的过程中将要传输的信息分块传输完成之后再进行合并。 应用…...

CP AUTOSAR标准之ChineseV2XNetwork(AUTOSAR_SWS_ChineseV2XNetwork)(更新中……)

1 简介和功能概述 本文档指定了AUTOSAR基础软件模块中国车辆对接网络(CnV2xNet)的功能、API和配置。   中国车联网网络(CnV2xNet)与中国车联网消息(CnV2xMsg)、中国车联网管理(CnV2xMgt)、中国车联网安全(CnV2xSec)以及AUTOSAR BSW模块以太网接口(EthIf)共同构成了AUTOSAR架构…...

【hloc】 项目流程

hloc 项目流程 1. 数据集准备2. 特征提取3. 匹配特征4. 三维重建5. 定位6. 结果评估7. 示例脚本 这个项目涉及到了视觉定位和三维重建的一系列步骤,从特征提取、匹配、三维重建到定位和结果评估。通过提供的脚本文件,用户可以方便地运行整个流程。 1. 数…...

鸿蒙系统开发【应用接续】基本功能

应用接续 介绍 基于ArkTS扩展的声明式开发范式编程语言编写的一个分布式视频播放器,主要包括一个直播视频播放界面,实现视频播放时可以从一台设备迁移到另一台设备继续运行,来选择更合适的设备继续执行播放功能以及PAD视频播放时协同调用手…...

nextTick方法的作用是什么?什么时候会用到

nextTick 方法在 Vue.js 中扮演着重要的角色,它用于在下次 DOM 更新循环结束之后执行延迟回调。这主要用于确保在 Vue 完成 DOM 更新后执行依赖于 DOM 的操作。 作用 确保 DOM 更新完成:Vue 的 DOM 更新是异步的,当你修改了数据后&#xff0…...

多 NodeJS 环境管理

前言 对于某个项目依赖特定版本的 NodeJS,或几个项目的 NodeJS 版本冲突时,需要在系统中安装多个版本的 NodeJS,这时可以使用一些工具来进行多个 NodeJS 的管理。 有很多类似的 NodeJS 管理工具,如 nvm, nvs, n 等,接…...

解决网站被植入跳转木马病毒

概述 网站被植入跳转木马病毒是一种常见的安全威胁,它可能导致网站用户被重定向到恶意站点。本文将指导您如何检测、清除这类木马病毒以及采取预防措施。 步骤1:确认感染 首先,需要确认您的网站确实受到了跳转木马的影响。 示例&#xff…...

Node.js(6)——npm软件包管理

npm npm是Node.js标准的软件包管理器。 使用: 初始化清单文件:npm init-y(得到package.json文件,有则略过此命令)下载软件包:npm i 软件包名称使用软件包 示例: 初始状态下npm文件夹下只有server.js,下载软件包前看…...

区块链核心概念与技术架构简介

引言 区块链,一种分布式账本技术,不仅为数字货币提供了基础设施,更在金融、供应链、物联网等多个领域展现出广泛的应用前景。区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。 如果说蒸汽机释放了人们的…...

≌图概念凸显包含射线V的直线W是比V长的线

黄小宁 x轴中:各非负数点xh≥0都变回自己即都作恒等变换,其余点x-h都变号为xh就使x轴失去负数点而变为射线V{xh≥0}。这x轴变为射线V⊂x轴是不保距变换即不是x轴的刚体运动使x轴不≌V⊂x轴(小学生都知道x轴不≌射线V)。据≌图概念…...

子路由的配置方法?

子路由的配置方法主要涉及到在Vue-router中定义嵌套路由,即一个路由内部包含多个子路由。以下是配置子路由的基本步骤: 1. 定义父路由 首先,在Vue Router中定义父路由。父路由可以像其他普通路由一样定义,但通常会有一个组件与之…...

【大模型从入门到精通2】openAI api的入门介绍2

互动对话界面的搭建 让我们来看看如何建立一个互动对话界面,用户可以在此输入查询,系统实时处理并显示响应。 import panel as pn # 用于构建图形用户界面# 初始化对话历史记录和GUI组件 conversation_history [] input_widget pn.widgets.TextInpu…...

【前端编程小白】的HTML从零入门到实战

之前有高中毕业生读了博客,想让我帮他找一些前端入门的内容,他们报的计算机专业,想利用开学前夕学习一下,我给他推荐了一些菜鸟教程呀什么的。后来想,看来还是很多人需要一些更加入门的可成的,而且很多教程…...

easyexcel读文件入批量入es

1. 封装实体类,并对应excel表中的列 Data public class User {private String md5;private String id; ExcelProperty(value "age")private String age;ExcelProperty(value "username")private String name;} 2. 批量入库 private void in…...

JS+H5打字练习器

实现功能 1.导入.TXT文件到打字练习内容(部分浏览器可能出于安全问题限制了这一步操作) 2.输入文本到打字练习内(弹出输入框,将要练习的内容输入至输入框) 3. 开始练习,并根据正误在打字练习内容文本上修…...

windows系统关闭开机自检硬盘

效果: 注册表关闭开机硬盘自检,你可以按照以下步骤操作: 打开注册表编辑器: 按 Win R 键打开“运行”对话框。输入 regedit 并按回车,打开注册表编辑器。 定位到自检相关的键: 依次展开以下路径&#x…...

【多线程开发 5】实践使用Lock和Condition

Lock和Condition Lock 线程之间同步或者竞争都需要锁这类结构,一般我们都会用Object的wait和signal搭配synchronized关键字进行多线程开发,但是很多时候会造成死锁的现象,这是因为synchroniezd无法破坏死锁的产生条件,但是Lock接…...

2.4-结构化并发:协程的结构化异常管理

文章目录 协程结构化异常流程协程结构化异常流程和取消流程的区别子协程异常为什么要连带取消父协程? CoroutineExceptionHandler异常协程异常的最后一道拦截:CoroutineExceptionHandlerCoroutineExceptionHandler 为什么只能设置给最外层协程才有效&…...

vscode里如何用git

打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

EtherNet/IP转DeviceNet协议网关详解

一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...

dify打造数据可视化图表

一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...