首页/新闻资讯/正文详情

Vue3项目ESLint+Prettier代码规范配置指南

发布时间:2026/11/4 7:19:26 来源:云帆数科 栏目:资讯中心
Vue3项目ESLint+Prettier代码规范配置指南
1. 项目背景与目标这个系列教程的第三部分将重点解决Vue3项目中的代码规范问题。作为现代前端开发的标准配置ESLint和Prettier的组合能够显著提升团队协作效率。Vite作为新一代构建工具与TypeScript的结合更是如虎添翼。在实际开发中我们经常会遇到这样的场景不同开发者提交的代码风格各异有的用单引号有的用双引号有的喜欢加分号有的不加缩进有用2空格有用4空格的。这种风格不统一会导致代码库看起来杂乱无章增加维护成本。而通过ESLintPrettier的组合我们可以实现自动格式化代码统一团队代码风格静态代码分析提前发现潜在错误类型检查减少运行时错误保存时自动修复提升开发效率2. 环境准备与项目初始化2.1 创建Vite项目首先确保你的开发环境已经安装了Node.js建议版本16和pnpm比npm/yarn更快的包管理器。打开终端执行以下命令创建项目pnpm create vitelatest vue3-admin --template vue-ts这个命令会创建一个基于Vue3和TypeScript的Vite项目。创建完成后进入项目目录并安装基础依赖cd vue3-admin pnpm install2.2 项目结构分析初始化后的项目结构如下vue3-admin/ ├── public/ # 静态资源 ├── src/ # 源代码 │ ├── assets/ # 资源文件 │ ├── components/ # 组件 │ ├── App.vue # 根组件 │ └── main.ts # 入口文件 ├── index.html # 主页面 ├── package.json # 项目配置 ├── tsconfig.json # TypeScript配置 └── vite.config.ts # Vite配置3. ESLint配置详解3.1 安装与初始化ESLint执行以下命令初始化ESLintpnpx eslint --init在初始化过程中我们需要做出以下选择检查语法和发现问题使用ES模块选择Vue.js框架使用TypeScript运行在浏览器和Node环境配置文件格式选择TypeScript安装jiti用于低版本Node读取TS配置初始化完成后项目会新增eslint.config.ts文件和一系列依赖。3.2 配置文件解析打开eslint.config.ts我们可以看到基础配置import js from eslint/js; import globals from globals; import tseslint from typescript-eslint; import pluginVue from eslint-plugin-vue; import { defineConfig } from eslint/config; export default defineConfig([ { files: [**/*.{js,mjs,cjs,ts,mts,cts,vue}], plugins: { js }, extends: [js/recommended], languageOptions: { globals: { ...globals.browser, ...globals.node } }, rules: { semi: [warn, always], }, }, tseslint.configs.recommended, pluginVue.configs[flat/essential], { files: [**/*.vue], languageOptions: { parserOptions: { parser: tseslint.parser } }, }, ]);这个配置做了以下几件事设置检查的文件类型启用ESLint的JS核心规则配置浏览器和Node的全局变量添加TypeScript支持添加Vue文件支持设置基础规则如强制分号3.3 添加脚本命令在package.json中添加以下脚本scripts: { lint: eslint . --ext .vue,.js,.ts, lint:fix: eslint . --ext .vue,.js,.ts --fix }现在可以运行以下命令检查或修复代码pnpm lint # 检查代码 pnpm lint:fix # 自动修复可修复的问题4. Prettier集成4.1 安装依赖Prettier负责代码格式化与ESLint配合使用pnpm add prettier eslint-config-prettier eslint-plugin-prettier -D这三个包的作用分别是prettier: 核心格式化工具eslint-config-prettier: 关闭与Prettier冲突的ESLint规则eslint-plugin-prettier: 将Prettier作为ESLint规则运行4.2 修改ESLint配置更新eslint.config.ts添加Prettier相关配置import eslintConfigPrettier from eslint-config-prettier/flat; import eslintPluginPrettierRecommended from eslint-plugin-prettier/recommended; export default defineConfig([ // ...原有配置 eslintConfigPrettier, eslintPluginPrettierRecommended, ]);重要提示Prettier配置必须放在最后因为它会覆盖前面的格式相关规则4.3 配置Prettier规则在项目根目录创建.prettierrc文件{ printWidth: 120, tabWidth: 2, useTabs: false, semi: true, singleQuote: true, quoteProps: as-needed, jsxSingleQuote: false, trailingComma: es5, bracketSpacing: true, bracketSameLine: false, arrowParens: always, vueIndentScriptAndStyle: true, endOfLine: lf }这些规则的含义printWidth: 每行最大120字符tabWidth: 2空格缩进singleQuote: 使用单引号trailingComma: 多行时保留尾随逗号vueIndentScriptAndStyle: Vue文件中script和style内容缩进5. VSCode集成5.1 安装必要插件在VSCode中安装以下插件ESLintPrettier - Code formatterVolar (Vue语言支持)5.2 配置自动格式化在VSCode设置中(settings.json)添加{ editor.defaultFormatter: esbenp.prettier-vscode, editor.formatOnSave: true, eslint.validate: [javascript, typescript, vue], editor.codeActionsOnSave: { source.fixAll.eslint: true } }这样配置后保存文件时会自动运行ESLint修复自动用Prettier格式化代码6. 常见问题与解决方案6.1 ESLint无法识别Vue文件如果遇到Vue文件不被ESLint识别的问题检查确保安装了eslint-plugin-vue检查eslint.config.ts中Vue相关配置是否正确确保VSCode的ESLint插件已启用6.2 Prettier与ESLint规则冲突常见的冲突包括引号规则分号规则缩进规则解决方案确保eslint-config-prettier正确配置检查配置顺序Prettier配置必须在最后统一.prettierrc和ESLint规则6.3 保存时无法自动修复如果保存时没有自动修复检查VSCode的ESLint插件是否安装并启用工作区是否正确识别了项目根目录的ESLint配置检查settings.json中的配置是否正确7. 高级配置技巧7.1 自定义规则在eslint.config.ts中可以添加自定义规则例如rules: { vue/multi-word-component-names: off, // 关闭组件名必须多单词的要求 typescript-eslint/no-explicit-any: warn, // 使用any时警告 no-console: process.env.NODE_ENV production ? error : off // 生产环境禁止console }7.2 Git Hooks集成可以通过Husky在提交前自动检查代码安装Huskypnpm add husky -D npx husky install添加pre-commit钩子npx husky add .husky/pre-commit pnpm lint这样在每次git commit前都会自动运行lint检查。7.3 忽略特定文件创建.eslintignore文件来忽略不需要检查的文件**/*.min.js dist/ node_modules/8. 项目实战建议在实际的后台管理系统开发中建议组件规范组件目录按功能划分组件名使用大驼峰命名一个组件一个目录包含.vue文件、样式和测试TypeScript最佳实践为所有props定义类型避免使用any类型为API响应定义接口目录结构优化src/ ├── api/ # API请求 ├── assets/ # 静态资源 ├── components/ # 公共组件 ├── composables/ # 组合式函数 ├── router/ # 路由配置 ├── stores/ # Pinia状态管理 ├── styles/ # 全局样式 ├── types/ # 类型定义 ├── utils/ # 工具函数 ├── views/ # 页面组件 ├── App.vue └── main.ts性能优化按需加载路由组件使用Vite的代码分割合理使用keep-alive缓存组件这套配置已经在多个实际项目中验证过能够显著提升开发效率和代码质量。特别是在团队协作中统一的代码风格可以减少很多不必要的争论和代码审查时间。

相关推荐

AI编程助手skills机制深度解析:从原理到团队工作流实践
AI编程助手skills机制深度解析:从原理到团队工作流实践

1. 从“skills”这个热词说起:它到底是什么,为什么突然火了最近几个月,不管是在技术社区还是开发者群里,“skills”这个词出现的频率高得离谱。你随便翻翻热搜词列表,能看到claude code、codex、agents、plugin、super… · 2026/11/4 13:19:34

牛几判定:五选三组合枚举与O(1)查表优化
牛几判定:五选三组合枚举与O(1)查表优化

“牛几”这三个字,第一次看到的人多半会愣一下,以为是某种方言或者暗语,其实它就是纸牌游戏里最常被问的那句话——“这手牌是牛几?”背后对应的是一个相当经典的组合判定问题:五张牌,从中挑三张&#xff0… · 2026/11/4 6:32:36

警惕来源不明工具:解析系统‘无法安全验证’提示的技术本质
警惕来源不明工具:解析系统‘无法安全验证’提示的技术本质

我无法按照您的要求生成关于“openclaw”的博文内容。原因如下:经全面检索与交叉验证,“openclaw”并非当前主流技术生态中公开、稳定、可验证的开源项目、工具链、框架或标准产品。它未出现在GitHub官方趋势榜(GitHub Trending)、… · 2026/11/4 14:09:40

ResNet18 CIFAR-10小图训练:结构适配、调参与避坑指南
ResNet18 CIFAR-10小图训练:结构适配、调参与避坑指南

简介:面向深度学习入门与图像识别实践者的 PyTorch 项目包,围绕 ResNet18 在 CIFAR10 十类彩色小图上的训练与评估展开,可用于理解残差块、短路连接、归一化与随机裁剪、水平翻转等数据增强,以及交叉熵损失、权重衰减和学习率调度… · 2026/11/5 6:55:33

论文阅读:TIFS 2026 SafeSteer: Adaptive Subspace Steering for Efficient Jailbreak Defense in Vision Langu
论文阅读:TIFS 2026 SafeSteer: Adaptive Subspace Steering for Efficient Jailbreak Defense in Vision Langu

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 6:55:33

Surfer 8.0英文版安装与打不开排查:64位兼容、DPI缩放和运行库
Surfer 8.0英文版安装与打不开排查:64位兼容、DPI缩放和运行库

简介:Surfer 8.0 英文版面向地质、环境科学、工程与地球科学领域的初学者及从业者,用于将离散观测数据转换为连续格网表面,并完成二维地质图件与三维地形模型的绘制。压缩包共234个文件,约12.41MB,包含exe与msi安装组件… · 2026/11/5 6:55:33

PyTorch ResNet18 CIFAR-10 图像识别工程实战
PyTorch ResNet18 CIFAR-10 图像识别工程实战

简介:ResNet18_CIFAR10.rar 面向希望动手复现图像分类完整流程的 PyTorch 学习者与深度学习入门者,围绕在 CIFAR10 十类数据集上训练 ResNet18 展开,兼顾残差结构理解、数据预处理与训练调优等实践需求。压缩包共 26 个文件、约 341.16MB&… · 2026/11/5 6:55:33

ResNet18+CIFAR-10图像识别训练链路拆解与二次开发
ResNet18+CIFAR-10图像识别训练链路拆解与二次开发

简介:面向深度学习入门与进阶读者的 PyTorch 图像识别实践包,围绕 ResNet18 在 CIFAR10 上的训练与评估展开,适合想理解残差结构、数据预处理、模型保存加载及分类预测流程的学习者。压缩包共 26 个文件,约 341.16MB,包… · 2026/11/5 6:55:33

【LTE L3 笔记 01】LTE空口特点
【LTE L3 笔记 01】LTE空口特点

课程来源:B站《【2022】华为HCIA-LTE无线工程师认证学习中级视频》 视频地址:https://www.bilibili.com/video/BV1P3411F7XX/?p1 笔记为个人整理,含课件截图,仅供学习交流。 目录一、Uu 接口是什么二、空口上只跑两种东西三、空口… · 2026/11/5 6:54:33

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码