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

Vue3 + Vite + TS 项目引入 Eslint + Pritter

文章目录

    • 一、ESLint 简介
      • 主要功能
      • 适用场景
      • 常用的 Eslint 配置项
    • 二、Pritter 简介
      • 主要功能
      • 适用场景
      • 常用的 Prettier 配置项
    • 三、Vue3 + Vite + TS 项目引入 Eslint + Pritter
      • 1. 安装 ESLint
      • 2. 初始化 ESLint 配置
      • 3. 在 Vite 项目中启用 ESLint
      • 4. 在 VS Code 中启用 ESLint
      • 5. 集成 Prettier
      • 6. 在 VS Code 中启用 Prettier 自动修复
      • 7. 可选优化:集成 eslint-plugin-simple-import-sort
      • 7. 插件版本
    • 四、最佳实践

一、ESLint 简介

ESLint 是一款 JavaScript 和相关语言(如 TypeScript、Vue 等)的静态代码分析工具,主要用于发现代码中的问题,并帮助开发者遵循代码规范。

主要功能

  • 语法检查:识别语法错误(如漏掉的括号、未定义的变量等)。
  • 代码质量检测:帮助发现潜在的逻辑问题(如未处理的 Promise)。
  • 规范代码风格:支持团队定义统一的代码风格(如是否使用分号、缩进方式等)。
  • 可扩展性强:支持多种插件(如 eslint-plugin-vue、eslint-plugin-react 等)和规则自定义。

适用场景

  • 项目开发:保障团队代码风格一致,减少错误。
  • 代码审查:辅助检测潜在问题,提升代码质量。

常用的 Eslint 配置项

二、Pritter 简介

Prettier 是一款专注于代码格式化的工具,它以无争议的方式对代码进行排版处理,确保代码风格的一致性。Prettier 不关注语法问题,而是专注于代码的外观。

主要功能

  • 格式化代码:自动调整代码的缩进、换行、空格等,使代码美观一致。
  • 支持多语言:不仅支持 JavaScript,还支持 HTML、CSS、JSON 等多种语言。
  • 集成方便:可以与编辑器(如 VS Code)、ESLint 等工具无缝结合。

适用场景

  • 团队合作:确保团队代码格式一致。
  • 提高效率:避免开发者因代码样式问题耗费时间。

常用的 Prettier 配置项

配置项描述默认值
semi是否在语句末尾添加分号。true
singleQuote使用单引号还是双引号。false
tabWidth每个缩进级别的空格数。2
trailingComma多行末尾是否添加逗号:none、es5(支持的语法)、all(所有地方)es5
printWidth每行代码的最大字符数,超过时会自动换行。80
bracketSpacing对象字面量中的括号之间是否加空格。true
jsxBracketSameLineJSX 中 > 是否与最后一行的属性放在同一行。false
arrowParens箭头函数参数周围是否总是加上圆括号。always(总是加括号),avoid(只有有多个参数时才加括号)always
proseWrap处理 Markdown 文本时是否换行。preserve
htmlWhitespaceSensitivity是否对 HTML 的空白符敏感。css(CSS 控制)、strict(严格敏感)、ignore(忽略空格)css
endOfLine设置行尾字符,支持:lf、crlf、cr、auto。auto
quoteProps对对象属性名使用引号的规则,支持:as-needed、consistent、preserveas-needed
overrides针对特定文件的配置覆盖。[]

三、Vue3 + Vite + TS 项目引入 Eslint + Pritter

1. 安装 ESLint

使用以下命令安装 ESLint 及其相关依赖:

npm install eslint eslint-plugin-vue @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev
  • eslint:核心 ESLint 工具。
  • eslint-plugin-vue:针对 Vue 文件的 ESLint 插件。
  • @typescript-eslint/parser:支持 TypeScript 的解析器。
  • @typescript-eslint/eslint-plugin:提供 TypeScript 相关规则。

2. 初始化 ESLint 配置

// .eslintrc.cjs
module.exports = {root: true, // 表示该配置是根配置env: {browser: true,es2021: true,node: true,},extends: ["eslint:recommended", // ESLint 推荐规则"plugin:vue/vue3-recommended", // Vue3 推荐规则"plugin:@typescript-eslint/recommended", // TypeScript 推荐规则"standard",],parser: "vue-eslint-parser", // Vue 文件解析器parserOptions: {parser: "@typescript-eslint/parser", // TypeScript 解析器ecmaVersion: "latest",sourceType: "module",},plugins: ["vue", "@typescript-eslint"],rules: {// 可根据需要调整规则'simple-import-sort/imports': 'error', // 自动排序 JavaScript 或 TypeScript 文件中的导入语句'simple-import-sort/exports': 'error', // 自动排序 JavaScript 或 TypeScript 文件中的导出语句'vue/multi-word-component-names': 0, // 避免使用单个词作为 Vue 组件的名称'@typescript-eslint/no-explicit-any': 0, // 防止在 TypeScript 代码中使用 any 类型'space-before-function-paren': 0, // 控制函数定义或函数表达式括号前的空格'no-use-before-define': 0, // 禁止在变量、函数或类定义之前使用它们'import/no-absolute-path': 0, // 禁止使用绝对路径导入模块'@typescript-eslint/no-non-null-assertion': 0, // 禁止在代码中使用 非空断言操作符(!)camelcase: 0, // 使用驼峰命名参数'@typescript-eslint/no-unused-vars': 'warn', // 检查并报告那些在代码中声明但未被使用的变量、函数参数、导入等'func-call-spacing': 0, // 控制在函数调用时,函数名称与括号之间是否应该有空格'@typescript-eslint/no-this-alias': ['error',{allowDestructuring: false,allowedNames: ['self']}], // 禁止在 TypeScript 中使用 this 的别名// 禁用重复声明检测, ts 会强制执行这个规则// 如果不禁用这个规则, 会导致 ts 函数重载的时候报错'no-redeclare': 0},
};

3. 在 Vite 项目中启用 ESLint

安装 vite-plugin-eslint,将 ESLint 集成到 Vite 的开发流程中:

npm install vite-plugin-eslint --save-dev

修改 vite.config.ts 文件:

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import eslint from "vite-plugin-eslint";export default defineConfig({plugins: [vue(),eslint({exclude: ['**/node_modules/**'] // 排除所有 node_modules 文件夹之外的文件都进行 eslint 检查}),],
});

4. 在 VS Code 中启用 ESLint

  1. 安装 ESLint 插件:

    在 VS Code 的扩展市场搜索并安装 ESLint 插件。

5. 集成 Prettier

  1. 安装 Prettier 及其 ESLint 插件:
npm install prettier eslint-config-prettier eslint-plugin-prettier --save-dev
  1. 在 .eslintrc.js 文件中添加 Prettier:
extends: ["prettier" // 关闭 ESLint 中与 Prettier 冲突的规则
],
plugins: ["prettier" // 将 Prettier 的格式化规则作为 ESLint 的规则使用
],
  1. 配置 .prettierrc 文件:
{"singleQuote": true,"semi": false,"trailingComma": "none","arrowParens": "avoid","useTabs": false,"tabWidth": 2,"bracketSpacing": true,"rangeStart": 0,"htmlWhitespaceSensitivity": "css","proseWrap": "preserve"
}

6. 在 VS Code 中启用 Prettier 自动修复

  1. 打开 VS Code 设置(Ctrl + , 或 ⌘ + ,),搜索 Format On Save,并启用。
  2. 或在 .vscode/settings.json 中添加:
{"editor.formatOnSave": true,
}
  1. 保存文件后会以 .prettierrc 文件中设置的规则对代码就行格式修正

7. 可选优化:集成 eslint-plugin-simple-import-sort

协同开发时为了避免 import 顺序不一致导致的冲突,需要对 import 文件引入顺序进行默认排序,通过 simple-import-sort 可以实现报错和修复。

  1. 安装 eslint-plugin-simple-import-sort 插件:
npm install eslint-plugin-simple-import-sort --save-dev
  1. 在 .eslintrc.js 文件中添加 eslint-plugin-simple-import-sort:
plugins: ["simple-import-sort"
],rules: {'simple-import-sort/imports': 'error','simple-import-sort/exports': 'error',
}

在这里插入图片描述

7. 插件版本

过新的版本可能会导致出错

"devDependencies": {"@typescript-eslint/eslint-plugin": "^5.60.0","@typescript-eslint/parser": "^5.60.0","eslint": "^7.32.0","eslint-config-prettier": "^8.8.0","eslint-config-standard": "^17.1.0","eslint-plugin-prettier": "^4.2.1","eslint-plugin-simple-import-sort": "^10.0.0","eslint-plugin-vue": "^9.15.1","prettier": "^3.3.3","vite-plugin-eslint": "^1.8.1","vue-eslint-parser": "^9.3.1"
},

四、最佳实践

ESLint 负责代码质量检测。
Prettier 负责代码格式化。
通过 eslint-config-prettier 解决两者规则冲突,确保工具间协同工作。

相关文章:

Vue3 + Vite + TS 项目引入 Eslint + Pritter

文章目录 一、ESLint 简介主要功能适用场景常用的 Eslint 配置项 二、Pritter 简介主要功能适用场景常用的 Prettier 配置项 三、Vue3 Vite TS 项目引入 Eslint Pritter1. 安装 ESLint2. 初始化 ESLint 配置3. 在 Vite 项目中启用 ESLint4. 在 VS Code 中启用 ESLint5. 集成…...

用Tauri框架构建跨平台桌面应用:1、Tauri快速开始

Tauri 是一个构建适用于所有主流桌面和移动平台的轻快二进制文件的框架。开发者们可以集成任何用于创建用户界面的可以被编译成 HTML、JavaScript 和 CSS 的前端框架,同时可以在必要时使用 Rust、Swift 和 Kotlin 等语言编写后端逻辑。 Tauri 是什么? |…...

Django实现智能问答助手-数据库方式读取问题和答案

扩展 增加问答数据库,通过 Django Admin 添加问题和答案。实现更复杂的问答逻辑,比如使用自然语言处理(NLP)库。使用前端框架(如 Bootstrap)增强用户界面 1.注册模型到 Django Admin(admin.py…...

stm32利用LED配置基础寄存器+体验滴答定时器+hal库环境配置

P1 LED控制与流水灯效果实现 概述 大家好,今天我们来学习一下如何在STM32上控制LED灯,并且实现一个流水灯的效果。这不仅是一个基础的实践,也是嵌入式开发中非常常见的需求。 LED控制 1. LED初始化 首先,我们需要对LED灯对应…...

JAVA开源项目 桂林旅游景点导游平台 计算机毕业设计

博主说明:本文项目编号 T 079 ,文末自助获取源码 \color{red}{T079,文末自助获取源码} T079,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

docker安装使用Elasticsearch,解决启动后无法访问9200问题

1.docker安装、启动es docker pull elasticsearch:8.13.0docker images启动容器 docker run -d -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS"-Xms256m -Xmx256m" --name es01 8ebd258614f1-d 后台运行-p 9200:9200 -p 9300:9300 开放与主机映射端口-e ES_JAVA_OPTS…...

GM、BP、LSTM时间预测预测代码

GM clc; clear; close all;%% 数据加载和预处理 [file, path] uigetfile(*.xlsx, Select the Excel file); filename fullfile(path, file); time_series xlsread(filename);% 确保数据是一列 time_series time_series(:);% 归一化数据 min_val min(time_series); max_v…...

《操作系统 - 清华大学》4 -5:非连续内存分配:页表一反向页表

文章目录 1. 大地址空间的问题2. 页寄存器( Page Registers )方案3. 基于关联内存(associative memory )的反向页表(inverted page table)4. 基于哈希(hashed)查找的反向页表5. 小结 1. 大地址空间的问题 …...

志愿者小程序源码社区网格志愿者服务小程序php

志愿者服务小程序源码开发方案:开发语言后端php,tp框架,前端是uniapp。 一 志愿者端-小程序: 申请成为志愿者,志愿者组织端进行审核。成为志愿者后,可以报名参加志愿者活动。 志愿者地图:可以…...

Java语言编程,通过阿里云mongo数据库监控实现数据库的连接池优化

一、背景 线上程序连接mongos超时,mongo监控显示连接数已使用100%。 java程序报错信息: org.mongodb.driver.connection: Closed connection [connectionId{localValue:1480}] to 192.168.10.16:3717 because there was a socket exception raised by…...

使用ufw配置防火墙,允许特定范围IP访问

文章目录 1. 安装 UFW(如果尚未安装)2. 允许特定 IP 地址访问 22 端口3. 允许特定子网访问 22 端口4. 启用 UFW5. 检查 UFW 状态6. 重新加载 UFW(如果需要)7. 删除规则(如果需要) 在ubuntu上使用 ufw&#…...

实现 UniApp 右上角按钮“扫一扫”功能实战教学

实现 UniApp 右上角按钮“扫一扫”功能实战教学 需求 点击右上角扫一扫按钮(onNavigationBarButtonTap监听),打开扫一扫页面(uni.scanCode) 扫描后,以网页的形式打开扫描内容(web-view组件),限制只能浏览带有执行域名的网站,例如…...

【2024亚太杯亚太赛APMCM C题】数学建模竞赛|宠物行业及相关产业的发展分析与策略|建模过程+完整代码论文全解全析

第一个问题是:请基于附件 1 中的数据以及你的团队收集的额外数据,分析过去五年中国宠物行业按宠物类型的发展情况。并分析中国宠物行业发展的因素,预测未来三年中国宠物行业的发展。 第一个问题:分析中国宠物行业按宠物类型的发展…...

ubtil循环函数调用

什么是until until循环是一种控制流结构。它与while循环相反,while循环是在条件为真时执行循环体,而until循环是在条件为假时执行循环体,直到条件为真时才停止循环。 until代码示例: i0 do until [ ! $i -lt 10 ] echo $…...

使用EFK收集k8s日志

首先我们使用EFK收集Kubernetes集群中的日志,本次实验讲解的是在Kubernetes集群中启动一个Elasticsearch集群,如果企业内已经有了Elasticsearch集群,可以直接将日志输出至已有的Elasticsearch集群。 文章目录 部署elasticsearch创建Kibana创建…...

聚水潭与MySQL数据集成案例分享

聚水潭数据集成到MySQL的技术案例分享 在现代数据驱动的业务环境中,如何高效、可靠地实现不同系统之间的数据对接成为企业关注的焦点。本次案例将详细介绍如何通过轻易云数据集成平台,将聚水潭的数据无缝集成到MySQL数据库中,实现从“聚水谭…...

Python 版本的 2024详细代码

2048游戏的Python实现 概述: 2048是一款流行的单人益智游戏,玩家通过滑动数字瓷砖来合并相同的数字,目标是合成2048这个数字。本文将介绍如何使用Python和Pygame库实现2048游戏的基本功能,包括游戏逻辑、界面绘制和用户交互。 主…...

SpringCloud框架学习(第四部分:Gateway网关)

目录 十一、Gateway新一代网关 1.概述 2.Gateway三大核心 3.工作流程 4.入门配置 5.路由映射 (1)8001 外部添加网关 (2)服务间调用添加网关 (3)存在问题 6.Gateway高级特性 (1&#x…...

C++ 类和对象 (上 )

学习本身就是一件很快乐的事情 一. 面向对象和面向过程 我们在学习计算机的过程中经常会听到xxx是一门面向对象的语言 xxx是一门面向过程的语言 那么到底什么是面向对象 什么是面向过程呢? 简单介绍下 面向过程 面向过程关注的是过程 分析出求解问题的步骤&…...

HAProxy面试题及参考答案(精选80道面试题)

目录 什么是 HAProxy? HAProxy 主要有哪些功能? HAProxy 的关键特性有哪些? HAProxy 的主要功能是什么? HAProxy 的作用是什么? 解释 HAProxy 在网络架构中的作用。 HAProxy 与负载均衡器之间的关系是什么? HAProxy 是如何实现负载均衡的? 阐述 HAProxy 的四层…...

React Native 导航系统实战(React Navigation)

导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...