最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue項(xiàng)目中ESLint(代碼質(zhì)量檢查)與Prettier(代碼格式化)配合配置指南

 更新時(shí)間:2026年02月27日 10:33:06   作者:Ddddk123_  
ESLint是js代碼的質(zhì)量檢查工具,同時(shí)也具備一定的代碼風(fēng)格的格式化能力,Prettier是一個(gè)代碼風(fēng)格的約束工具,能約束JS、JSX、TypeScript、Vue等代碼風(fēng)格,這篇文章主要介紹了Vue項(xiàng)目中ESLint(代碼質(zhì)量檢查)與Prettier(代碼格式化)配合配置的相關(guān)資料,需要的朋友可以參考下

前言

基于 pnpm 創(chuàng)建 Vue 項(xiàng)目,通過(guò)針對(duì)性配置實(shí)現(xiàn) ESLint(代碼質(zhì)量檢查)與 Prettier(代碼格式化)協(xié)同工作,避免規(guī)則沖突,達(dá)成 “保存即自動(dòng)修復(fù)格式與質(zhì)量問(wèn)題” 的效果。

一、項(xiàng)目創(chuàng)建與依賴準(zhǔn)備

1. 用 pnpm 創(chuàng)建 Vue 項(xiàng)目

執(zhí)行創(chuàng)建命令,過(guò)程中需選擇 ESLint 和 Prettier 相關(guān)選項(xiàng)(避免后續(xù)手動(dòng)補(bǔ)裝基礎(chǔ)依賴):

pnpm create vue@latest

創(chuàng)建時(shí)的關(guān)鍵選擇(按需求確認(rèn)):

  • ? Add ESLint for code quality? → Yes
  • ? Add Prettier for code formatting? → Yes
  • 其他選項(xiàng)(如 Pinia、Vue Router)按需選擇,不影響 ESLint/Prettier 配合

2. 檢查并補(bǔ)全依賴

項(xiàng)目創(chuàng)建后,進(jìn)入目錄安裝依賴,同時(shí)確保關(guān)鍵依賴已存在(若創(chuàng)建時(shí)未選全,需手動(dòng)安裝):

cd 項(xiàng)目目錄
pnpm install
# 補(bǔ)裝缺失的依賴(如 eslint-plugin-prettier,一般會(huì)缺失此依賴)
pnpm add -D eslint-plugin-prettier

最終 package.json 中需包含的核心依賴(確認(rèn) devDependencies 字段):

"devDependencies": {
  "@eslint/js": "^9.37.0",        // ESLint 基礎(chǔ)規(guī)則
  "@vue/eslint-config-prettier": "^10.2.0", // Vue 專用:解決 ESLint 與 Prettier 沖突
  "eslint": "^9.37.0",            // ESLint 核心工具
  "eslint-plugin-prettier": "^5.5.4", // 關(guān)鍵:將 Prettier 規(guī)則轉(zhuǎn)為 ESLint 可識(shí)別錯(cuò)誤
  "eslint-plugin-vue": "~10.5.0", // Vue 專用 ESLint 插件
  "prettier": "3.6.2",            // Prettier 核心工具
  "vite": "^7.1.11"               // 項(xiàng)目構(gòu)建工具(創(chuàng)建時(shí)自帶)
}

package.json 中的關(guān)鍵腳本(確保 scripts 字段包含):

"scripts": {
  "lint": "eslint . --fix --cache", // 手動(dòng)執(zhí)行 ESLint 修復(fù)(格式+質(zhì)量問(wèn)題)
  "format": "prettier --write src/"  // 手動(dòng)執(zhí)行 Prettier 格式化(備用)
}

二、核心配置文件:實(shí)現(xiàn) ESLint 與 Prettier 協(xié)同

需配置 3 類文件:ESLint 配置文件、Prettier 規(guī)則文件、VSCode 全局 / 工作區(qū)配置。

1. ESLint 配置文件:eslint.config.js(項(xiàng)目根目錄)

作用:定義 ESLint 規(guī)則,整合 Prettier 規(guī)則,解決 Vue 項(xiàng)目特有的規(guī)則沖突。完整配置代碼(關(guān)鍵配置已標(biāo)注說(shuō)明):

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 沖突的規(guī)則
import prettier from 'eslint-plugin-prettier' // 引入 Prettier 插件(將 Prettier 規(guī)則轉(zhuǎn)為 ESLint 錯(cuò)誤)

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

  // 2. 忽略無(wú)需檢查的目錄(如構(gòu)建產(chǎn)物、測(cè)試報(bào)告)
  globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),

  // 3. 語(yǔ)言環(huán)境配置(瀏覽器全局變量)
  {
    languageOptions: {
      globals: {
        ...globals.browser, // 允許使用 window、document 等瀏覽器全局變量
      },
    },
  },

  // 4. 基礎(chǔ)規(guī)則:ESLint 官方推薦規(guī)則(通用 JS 質(zhì)量檢查)
  js.configs.recommended,

  // 5. Vue 基礎(chǔ)規(guī)則:Vue 官方推薦的核心規(guī)則(如模板語(yǔ)法校驗(yàn))
  ...pluginVue.configs['flat/essential'],

  // 6. 關(guān)鍵:整合 Prettier 規(guī)則(將 Prettier 格式問(wèn)題轉(zhuǎn)為 ESLint 錯(cuò)誤,支持 --fix 修復(fù))
  {
    plugins: { prettier }, // 啟用 Prettier 插件
    rules: {
      'prettier/prettier': 'error', // 把 Prettier 格式問(wèn)題標(biāo)記為 ESLint 錯(cuò)誤
    },
  },

  // 7. 關(guān)鍵:解決 ESLint 與 Prettier 規(guī)則沖突(如縮進(jìn)、引號(hào)規(guī)則沖突)
  skipFormatting,

  // 8. 自定義 Vue 規(guī)則(示例:允許單單詞組件名,如 index.vue)
  {
    rules: {
      'vue/multi-word-component-names': 'off', // 關(guān)閉“組件名必須多單詞”檢查
      // 可添加其他 ESLint 規(guī)則,如禁止使用 var:'no-var': 'error'
    }
  }
])

2. Prettier 規(guī)則文件:.prettierrc.json(項(xiàng)目根目錄)

作用:定義代碼格式化規(guī)則(如引號(hào)、縮進(jìn)、分號(hào)),ESLint 會(huì)讀取此文件的規(guī)則。常用配置代碼(可按需調(diào)整):

{
  "$schema": "https://json.schemastore.org/prettierrc", // 引入 Prettier 規(guī)則 schema(語(yǔ)法提示)
  "semi": false, // 語(yǔ)句末尾不加分號(hào)
  "singleQuote": true, // 使用單引號(hào)代替雙引號(hào)
  "printWidth": 100, // 每行代碼最大寬度(超過(guò)自動(dòng)換行)
  "tabWidth": 2, // 縮進(jìn)為 2 個(gè)空格
  "trailingComma": "none", // 對(duì)象/數(shù)組末尾不添加逗號(hào)
  "arrowParens": "avoid" // 箭頭函數(shù)參數(shù)只有一個(gè)時(shí),省略括號(hào)(如 (a) => {} → a => {})
}

后續(xù)需新增格式化規(guī)則(如換行符、空格),直接在此文件添加即可。

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

作用:指定 VSCode 編輯器的格式化工具、保存行為,確保與項(xiàng)目配置對(duì)齊,避免插件沖突。完整配置代碼(關(guān)鍵配置已標(biāo)注,保留用戶原有非沖突配置):

{
  // ---------------------- 原有非沖突配置(保留)----------------------
  "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 相關(guān))保留不變

  // ---------------------- ESLint 與 Prettier 核心配置 ----------------------
  // 1. 全局默認(rèn)格式化器設(shè)為 ESLint(確保所有文件用 ESLint 格式化)
  "editor.defaultFormatter": "dbaeumer.vscode-eslint",
  // 2. 單獨(dú)指定 Vue/JS 文件的格式化器(優(yōu)先級(jí)高于全局,避免工具沖突)
  "[vue]": {
    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  },
  "[javascript]": {
    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  },
  // 3. 保存時(shí):觸發(fā) ESLint 自動(dòng)修復(fù)(格式問(wèn)題+代碼質(zhì)量問(wèn)題)
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  // 4. 保存時(shí):觸發(fā) ESLint 格式化器的完整邏輯(補(bǔ)充修復(fù)細(xì)節(jié),與上一條互補(bǔ))
  "editor.formatOnSave": true,
  // 5. 禁用 Prettier 插件的自動(dòng)功能(雙重保險(xiǎn),避免與 ESLint 沖突)
  "prettier.enable": false
}

配置位置說(shuō)明

  • 工作區(qū)配置(推薦):在項(xiàng)目根目錄創(chuàng)建 .vscode/settings.json,僅對(duì)當(dāng)前項(xiàng)目生效;
  • 全局配置:通過(guò) VSCode 菜單「文件 → 首選項(xiàng) → 設(shè)置 → 打開(kāi)設(shè)置 (JSON)」,對(duì)所有項(xiàng)目生效。

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

1. 必須安裝的插件

  • ESLint(作者:Microsoft):執(zhí)行 ESLint 規(guī)則檢查與自動(dòng)修復(fù),是協(xié)同工作的核心插件。

2. 必須禁用的插件

  • Prettier - Code formatter(作者:Prettier):原因:項(xiàng)目已通過(guò) ESLint 整合 Prettier 規(guī)則,該插件啟用后可能通過(guò)手動(dòng)操作(如右鍵 “格式化文檔”)觸發(fā)沖突,導(dǎo)致格式來(lái)回切換。操作:在 VSCode 「擴(kuò)展」面板找到該插件,點(diǎn)擊「禁用」(無(wú)需卸載,后續(xù)非項(xiàng)目場(chǎng)景可臨時(shí)啟用)。

四、配置驗(yàn)證:確保 ESLint 與 Prettier 正常配合

完成配置后,通過(guò)以下步驟驗(yàn)證效果:

1. 驗(yàn)證格式化規(guī)則(Prettier 規(guī)則生效)

  • 在 Vue 文件(如 App.vue)中寫入不符合 Prettier 規(guī)則的代碼:
    <template>
      <div id="app" > <!-- 雙引號(hào)(應(yīng)轉(zhuǎn)為單引號(hào))、多余空格 -->
        {{ msg }}
      </div>
    </template>
    
  • 按 Ctrl+S 保存文件,觀察代碼是否自動(dòng)修復(fù):
    • 雙引號(hào) "app" → 單引號(hào) 'app'(符合 .prettierrc.json 的 singleQuote: true);
    • 多余空格被刪除(符合 Prettier 默認(rèn)空格規(guī)則)。

2. 驗(yàn)證代碼質(zhì)量規(guī)則(ESLint 規(guī)則生效)

  • 在 JS 文件(如 main.js)中寫入不符合 ESLint 規(guī)則的代碼:
    var test = 123; // var 關(guān)鍵字(ESLint 禁止使用 var)
    console.log(test);
    
  • 按 Ctrl+S 保存,觀察代碼是否自動(dòng)修復(fù):
    • var test → let test(符合 ESLint 核心規(guī)則 no-var: error);
    • 若未自動(dòng)修復(fù),執(zhí)行 pnpm lint 命令,手動(dòng)觸發(fā)修復(fù)。

3. 驗(yàn)證 Vue 專用規(guī)則(eslint-plugin-vue 生效)

  • 在 Vue 組件(如 components/HelloWorld.vue)中寫入不符合 Vue 規(guī)則的代碼:
    <template>
      <div>{{ undefinedVar }}</div> <!-- 引用未定義變量 -->
    </template>
    
  • 觀察 VSCode 是否提示錯(cuò)誤(紅色波浪線),執(zhí)行 pnpm lint 命令,終端會(huì)報(bào)錯(cuò)提示 “未定義變量”(需手動(dòng)修改代碼解決,ESLint 無(wú)法自動(dòng)修復(fù)邏輯錯(cuò)誤)。

五、常見(jiàn)問(wèn)題與解決方案

問(wèn)題現(xiàn)象可能原因解決方案
保存時(shí)雙引號(hào)未轉(zhuǎn)為單引號(hào)1. .prettierrc.json 未配置 singleQuote: true;2. VSCode 格式化器未設(shè)為 ESLint1. 檢查 .prettierrc.json,確保 singleQuote: true;2. 檢查 settings.json,確保 editor.defaultFormatter 為 dbaeumer.vscode-eslint
執(zhí)行 pnpm lint 無(wú)反應(yīng)1. eslint.config.js 未指定檢查文件;2. 依賴未安裝完整1. 檢查 eslint.config.js 的 files 字段,確保包含 **/*.{js,vue};2. 重新執(zhí)行 pnpm install,確保 eslint-plugin-prettier 已安裝
Vue 單單詞組件名(如 index.vue)報(bào)錯(cuò)eslint.config.js 未關(guān)閉 vue/multi-word-component-names 規(guī)則在 eslint.config.js 的 rules 中添加 "vue/multi-word-component-names": "off"

六、核心邏輯總結(jié)

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

  • 規(guī)則來(lái)源:Prettier 格式化規(guī)則寫在 .prettierrc.json,ESLint 代碼質(zhì)量規(guī)則寫在 eslint.config.js;
  • 協(xié)同橋梁eslint-plugin-prettier 將 Prettier 規(guī)則轉(zhuǎn)為 ESLint 可識(shí)別的錯(cuò)誤,@vue/eslint-config-prettier 解決兩者規(guī)則沖突;
  • 編輯器觸發(fā):VSCode 通過(guò) settings.json 配置,讓保存時(shí)自動(dòng)觸發(fā) ESLint 修復(fù),實(shí)現(xiàn) “格式 + 質(zhì)量” 一鍵搞定。

到此這篇關(guān)于Vue項(xiàng)目中ESLint(代碼質(zhì)量檢查)與Prettier(代碼格式化)配合配置的文章就介紹到這了,更多相關(guān)Vue中ESLint與Prettier配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入探索Vue3.x中的七大高級(jí)用法

    深入探索Vue3.x中的七大高級(jí)用法

    Vue3.x 自發(fā)布以來(lái),憑借其性能的顯著提升和更加靈活的組合式 API,已經(jīng)成為了現(xiàn)代前端開(kāi)發(fā)的重要工具之一,除了基本用法外,Vue3.x 還提供了許多高級(jí)功能,本文將和大家一起深入探索Vue3.x中的七大高級(jí)用法,需要的朋友可以參考下
    2024-03-03
  • 詳解vue-router 初始化時(shí)做了什么

    詳解vue-router 初始化時(shí)做了什么

    這篇文章主要介紹了詳解vue-router 初始化時(shí)做了什么,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Vue零基礎(chǔ)入門之模板語(yǔ)法與數(shù)據(jù)綁定及Object.defineProperty方法詳解

    Vue零基礎(chǔ)入門之模板語(yǔ)法與數(shù)據(jù)綁定及Object.defineProperty方法詳解

    這篇文章主要介紹了Vue初學(xué)基礎(chǔ)中的模板語(yǔ)法、數(shù)據(jù)綁定、Object.defineProperty方法等基礎(chǔ),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • clipboard在vue中的使用的方法示例

    clipboard在vue中的使用的方法示例

    這篇文章主要介紹了clipboard在vue中的使用的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 最新評(píng)論

    武宁县| 包头市| 甘德县| 阜宁县| 洞头县| 喀喇沁旗| 出国| 汝州市| 吉木乃县| 福贡县| 余姚市| 灌阳县| 宁河县| 彰武县| 涞源县| 青海省| 繁峙县| 云浮市| 商都县| 宜宾市| 白沙| 本溪市| 平顺县| 苏州市| 扬州市| 繁峙县| 宜宾县| 嵊州市| 富锦市| 枣强县| 渭源县| 通海县| 乐山市| 旺苍县| 衡东县| 鹿邑县| 陇西县| 滨海县| 罗田县| 乌恰县| 赤壁市|