Vue项目中ESLint(代码质量检查)与Prettier(代码格式化)配合配置指南

 更新时间:2026年02月27日 10:33:06   作者:Ddddk123_  
ESLint是js代码的质量检查工具,同时也具备一定的代码风格的格式化能力,Prettier是一个代码风格的约束工具,能约束JS、JSX、TypeScript、Vue等代码风格,这篇文章主要介绍了Vue项目中ESLint(代码质量检查)与Prettier(代码格式化)配合配置的相关资料,需要的朋友可以参考下

前言

基于 pnpm 创建 Vue 项目,通过针对性配置实现 ESLint(代码质量检查)与 Prettier(代码格式化)协同工作,避免规则冲突,达成 “保存即自动修复格式与质量问题” 的效果。

一、项目创建与依赖准备

1. 用 pnpm 创建 Vue 项目

执行创建命令,过程中需选择 ESLint 和 Prettier 相关选项(避免后续手动补装基础依赖):

pnpm create vue@latest

创建时的关键选择(按需求确认):

  • ✅ Add ESLint for code quality? → Yes
  • ✅ Add Prettier for code formatting? → Yes
  • 其他选项(如 Pinia、Vue Router)按需选择,不影响 ESLint/Prettier 配合

2. 检查并补全依赖

项目创建后,进入目录安装依赖,同时确保关键依赖已存在(若创建时未选全,需手动安装):

cd 项目目录
pnpm install
# 补装缺失的依赖(如 eslint-plugin-prettier,一般会缺失此依赖)
pnpm add -D eslint-plugin-prettier

最终 package.json 中需包含的核心依赖(确认 devDependencies 字段):

"devDependencies": {
  "@eslint/js": "^9.37.0",        // ESLint 基础规则
  "@vue/eslint-config-prettier": "^10.2.0", // Vue 专用:解决 ESLint 与 Prettier 冲突
  "eslint": "^9.37.0",            // ESLint 核心工具
  "eslint-plugin-prettier": "^5.5.4", // 关键:将 Prettier 规则转为 ESLint 可识别错误
  "eslint-plugin-vue": "~10.5.0", // Vue 专用 ESLint 插件
  "prettier": "3.6.2",            // Prettier 核心工具
  "vite": "^7.1.11"               // 项目构建工具(创建时自带)
}

package.json 中的关键脚本(确保 scripts 字段包含):

"scripts": {
  "lint": "eslint . --fix --cache", // 手动执行 ESLint 修复(格式+质量问题)
  "format": "prettier --write src/"  // 手动执行 Prettier 格式化(备用)
}

二、核心配置文件:实现 ESLint 与 Prettier 协同

需配置 3 类文件:ESLint 配置文件、Prettier 规则文件、VSCode 全局 / 工作区配置。

1. ESLint 配置文件:eslint.config.js(项目根目录)

作用:定义 ESLint 规则,整合 Prettier 规则,解决 Vue 项目特有的规则冲突。完整配置代码(关键配置已标注说明):

import { 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' // 禁用 ESLint 与 Prettier 冲突的规则
import prettier from 'eslint-plugin-prettier' // 引入 Prettier 插件(将 Prettier 规则转为 ESLint 错误)

export default defineConfig([
  // 1. 指定需要检查的文件类型
  {
    name: 'app/files-to-lint',
    files: ['**/*.{js,mjs,jsx,vue}'], // 检查 JS、Vue 文件
  },

  // 2. 忽略无需检查的目录(如构建产物、测试报告)
  globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),

  // 3. 语言环境配置(浏览器全局变量)
  {
    languageOptions: {
      globals: {
        ...globals.browser, // 允许使用 window、document 等浏览器全局变量
      },
    },
  },

  // 4. 基础规则:ESLint 官方推荐规则(通用 JS 质量检查)
  js.configs.recommended,

  // 5. Vue 基础规则:Vue 官方推荐的核心规则(如模板语法校验)
  ...pluginVue.configs['flat/essential'],

  // 6. 关键:整合 Prettier 规则(将 Prettier 格式问题转为 ESLint 错误,支持 --fix 修复)
  {
    plugins: { prettier }, // 启用 Prettier 插件
    rules: {
      'prettier/prettier': 'error', // 把 Prettier 格式问题标记为 ESLint 错误
    },
  },

  // 7. 关键:解决 ESLint 与 Prettier 规则冲突(如缩进、引号规则冲突)
  skipFormatting,

  // 8. 自定义 Vue 规则(示例:允许单单词组件名,如 index.vue)
  {
    rules: {
      'vue/multi-word-component-names': 'off', // 关闭“组件名必须多单词”检查
      // 可添加其他 ESLint 规则,如禁止使用 var:'no-var': 'error'
    }
  }
])

2. Prettier 规则文件:.prettierrc.json(项目根目录)

作用:定义代码格式化规则(如引号、缩进、分号),ESLint 会读取此文件的规则。常用配置代码(可按需调整):

{
  "$schema": "https://json.schemastore.org/prettierrc", // 引入 Prettier 规则 schema(语法提示)
  "semi": false, // 语句末尾不加分号
  "singleQuote": true, // 使用单引号代替双引号
  "printWidth": 100, // 每行代码最大宽度(超过自动换行)
  "tabWidth": 2, // 缩进为 2 个空格
  "trailingComma": "none", // 对象/数组末尾不添加逗号
  "arrowParens": "avoid" // 箭头函数参数只有一个时,省略括号(如 (a) => {} → a => {})
}

后续需新增格式化规则(如换行符、空格),直接在此文件添加即可。

3. VSCode 配置文件:settings.json(工作区或全局)

作用:指定 VSCode 编辑器的格式化工具、保存行为,确保与项目配置对齐,避免插件冲突。完整配置代码(关键配置已标注,保留用户原有非冲突配置):

{
  // ---------------------- 原有非冲突配置(保留)----------------------
  "Codegeex.Privacy": true,
  "explorer.confirmDelete": false,
  "workbench.iconTheme": "vscode-icons",
  "editor.fontSize": 17,
  "editor.tabSize": 2,
  "editor.formatOnPaste": true,
  "github.copilot.enable": { "*": false },
  "editor.minimap.enabled": false,
  // ... 其他原有配置(如 LeetCode、DrawIO 相关)保留不变

  // ---------------------- ESLint 与 Prettier 核心配置 ----------------------
  // 1. 全局默认格式化器设为 ESLint(确保所有文件用 ESLint 格式化)
  "editor.defaultFormatter": "dbaeumer.vscode-eslint",
  // 2. 单独指定 Vue/JS 文件的格式化器(优先级高于全局,避免工具冲突)
  "[vue]": {
    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  },
  "[javascript]": {
    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  },
  // 3. 保存时:触发 ESLint 自动修复(格式问题+代码质量问题)
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  // 4. 保存时:触发 ESLint 格式化器的完整逻辑(补充修复细节,与上一条互补)
  "editor.formatOnSave": true,
  // 5. 禁用 Prettier 插件的自动功能(双重保险,避免与 ESLint 冲突)
  "prettier.enable": false
}

配置位置说明

  • 工作区配置(推荐):在项目根目录创建 .vscode/settings.json,仅对当前项目生效;
  • 全局配置:通过 VSCode 菜单「文件 → 首选项 → 设置 → 打开设置 (JSON)」,对所有项目生效。

三、VSCode 插件管理:避免工具冲突

1. 必须安装的插件

  • ESLint(作者:Microsoft):执行 ESLint 规则检查与自动修复,是协同工作的核心插件。

2. 必须禁用的插件

  • Prettier - Code formatter(作者:Prettier):原因:项目已通过 ESLint 整合 Prettier 规则,该插件启用后可能通过手动操作(如右键 “格式化文档”)触发冲突,导致格式来回切换。操作:在 VSCode 「扩展」面板找到该插件,点击「禁用」(无需卸载,后续非项目场景可临时启用)。

四、配置验证:确保 ESLint 与 Prettier 正常配合

完成配置后,通过以下步骤验证效果:

1. 验证格式化规则(Prettier 规则生效)

  • 在 Vue 文件(如 App.vue)中写入不符合 Prettier 规则的代码:
    <template>
      <div id="app" > <!-- 双引号(应转为单引号)、多余空格 -->
        {{ msg }}
      </div>
    </template>
    
  • 按 Ctrl+S 保存文件,观察代码是否自动修复:
    • 双引号 "app" → 单引号 'app'(符合 .prettierrc.json 的 singleQuote: true);
    • 多余空格被删除(符合 Prettier 默认空格规则)。

2. 验证代码质量规则(ESLint 规则生效)

  • 在 JS 文件(如 main.js)中写入不符合 ESLint 规则的代码:
    var test = 123; // var 关键字(ESLint 禁止使用 var)
    console.log(test);
    
  • 按 Ctrl+S 保存,观察代码是否自动修复:
    • var test → let test(符合 ESLint 核心规则 no-var: error);
    • 若未自动修复,执行 pnpm lint 命令,手动触发修复。

3. 验证 Vue 专用规则(eslint-plugin-vue 生效)

  • 在 Vue 组件(如 components/HelloWorld.vue)中写入不符合 Vue 规则的代码:
    <template>
      <div>{{ undefinedVar }}</div> <!-- 引用未定义变量 -->
    </template>
    
  • 观察 VSCode 是否提示错误(红色波浪线),执行 pnpm lint 命令,终端会报错提示 “未定义变量”(需手动修改代码解决,ESLint 无法自动修复逻辑错误)。

五、常见问题与解决方案

问题现象可能原因解决方案
保存时双引号未转为单引号1. .prettierrc.json 未配置 singleQuote: true;2. VSCode 格式化器未设为 ESLint1. 检查 .prettierrc.json,确保 singleQuote: true;2. 检查 settings.json,确保 editor.defaultFormatter 为 dbaeumer.vscode-eslint
执行 pnpm lint 无反应1. eslint.config.js 未指定检查文件;2. 依赖未安装完整1. 检查 eslint.config.js 的 files 字段,确保包含 **/*.{js,vue};2. 重新执行 pnpm install,确保 eslint-plugin-prettier 已安装
Vue 单单词组件名(如 index.vue)报错eslint.config.js 未关闭 vue/multi-word-component-names 规则在 eslint.config.js 的 rules 中添加 "vue/multi-word-component-names": "off"

六、核心逻辑总结

ESLint 与 Prettier 完美配合的核心是 “让 ESLint 接管 Prettier 的格式化工作”,避免工具冲突:

  • 规则来源:Prettier 格式化规则写在 .prettierrc.json,ESLint 代码质量规则写在 eslint.config.js
  • 协同桥梁eslint-plugin-prettier 将 Prettier 规则转为 ESLint 可识别的错误,@vue/eslint-config-prettier 解决两者规则冲突;
  • 编辑器触发:VSCode 通过 settings.json 配置,让保存时自动触发 ESLint 修复,实现 “格式 + 质量” 一键搞定。

到此这篇关于Vue项目中ESLint(代码质量检查)与Prettier(代码格式化)配合配置的文章就介绍到这了,更多相关Vue中ESLint与Prettier配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue3封装全局自定义指令实现按钮权限控制功能实例

    Vue3封装全局自定义指令实现按钮权限控制功能实例

    在Vue应用中自定义指令是一种强大的功能,可以用于封装DOM操作逻辑,这篇文章主要介绍了Vue3封装全局自定义指令实现按钮权限控制功能的相关资料,需要的朋友可以参考下
    2025-07-07
  • vue中常用方法的用法汇总

    vue中常用方法的用法汇总

    Vue.js 是一个用于构建用户界面的渐进式框架,本文主要为大家整理了一些常用的 Vue 方法及其详细说明和代码示例,有需要的小伙伴可以参考一下
    2023-11-11
  • Vue实现简单的跑马灯

    Vue实现简单的跑马灯

    这篇文章主要为大家详细介绍了Vue实现简单的跑马灯,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • VUE使用canvas绘制管线管廊实现思路

    VUE使用canvas绘制管线管廊实现思路

    这篇文章主要为大家介绍了VUE使用canvas绘制管线管廊实现思路详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • el-table表头使用el-dropdown出现两个下拉框的问题及解决方法

    el-table表头使用el-dropdown出现两个下拉框的问题及解决方法

    本文给大家分享el-table在固定右边列时,表头使用el-dropdown会出现两个下拉框的解决方法,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • 在 Vue 3 中设置 `@` 指向根目录的几种常见方法汇总

    在 Vue 3 中设置 `@` 指向根目录的几种常见方法汇总

    在 Vue 3 项目开发中,为了方便管理和引用文件路径,设置 @ 指向根目录是一项常见的需求,下面给大家分享在Vue3中设置 `@` 指向根目录的方法汇总,感兴趣的朋友一起看看吧
    2024-06-06
  • vue数字金额动态变化功能实现方法详解

    vue数字金额动态变化功能实现方法详解

    这篇文章主要介绍了vue实现数字金额动态变化效果,数字动态变化是我们在前端开发中经常需要做的效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09
  • Vue 计算属性 computed

    Vue 计算属性 computed

    这篇文章主要介绍了Vue 计算属性 computed,一般情况下属性都是放到data中的,但是有些属性可能是需要经过一些逻辑计算后才能得出来,那么我们可以把这类属性变成计算属性,下面我们来看看具体实例,需要的朋友可以参考一下
    2021-10-10
  • vue 请求后端数据的示例代码

    vue 请求后端数据的示例代码

    在vue中,我们如何通过请求接口来访问后端的数据呢?在这里简单总结了一个小示例,对vue请求后端数据实例代码感兴趣的朋友一起看看吧
    2022-09-09
  • 基于vue开发的在线付费课程应用过程

    基于vue开发的在线付费课程应用过程

    这篇文章主要介绍了基于vue开发的在线付费课程应用过程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论