【vue3-element-admin】ESLint+Prettier+Stylelint+EditorConfig 約束和統一前端代碼規範

来源:https://www.cnblogs.com/haoxianrui/archive/2023/04/17/17324631.html
-Advertisement-
Play Games

通過ESLint 檢測 JS/TS 代碼、Prettier 格式化代碼、Stylelint 檢測 CSS/SCSS 代碼和配置 EditorConfig 來實現前端代碼規範約束和統一。 ...


前言

本文介紹 vue3-element-admin 如何通過ESLint 檢測 JS/TS 代碼、Prettier 格式化代碼、Stylelint 檢測 CSS/SCSS 代碼和配置 EditorConfig 來全方位約束和統一前端代碼規範。

ESLint 代碼檢測

ESLint 可組裝的JavaScript和JSX檢查工具,目標是保證代碼的一致性和避免錯誤。

ESLint 安裝

安裝 ESLint 插件

VSCode 插件市場搜索 ESLint 插件並安裝

安裝 ESLint 依賴

npm i -D eslint

ESLint 配置

ESLint 配置(.eslintrc.cjs)

執行命令完成 ESLint 配置初始化

npx eslint --init

根目錄自動生成的 .eslintrc.cjs 配置內容如下:

module.exports = {
  env: {
    es2021: true,
    node: true,
  },
  extends: [
    "eslint:recommended",
    "plugin:vue/vue3-essential",
    "plugin:@typescript-eslint/recommended",
  ],
  overrides: [],
  parser: "@typescript-eslint/parser",
  parserOptions: {
    ecmaVersion: "latest",
    sourceType: "module",
  },
  plugins: ["vue", "@typescript-eslint"],
  rules: {},
};

ESLint 解析器配置

在預設配置基礎上需要修改解析器為 vue-eslint-parser ,不然在檢測執行中出現 error Parsing error: '>' expected 的解析錯誤,修改 .eslintrc.cjs 如下:

ESLint 忽略配置(.eslintignore)

根目錄新建 .eslintignore 文件,添加忽略文件, ESLint 校驗會忽略這些文件,配置如下:

dist
node_modules
public
.husky
.vscode
.idea
*.sh
*.md

src/assets

.eslintrc.cjs
.prettierrc.cjs
.stylelintrc.cjs

ESLint 檢測指令

package.json 添加 eslint 檢測指令:

  "scripts": {
    "lint:eslint": "eslint \"src/**/*.{vue,ts,js}\" --fix"
  }

ESLint 檢測

ESLint 檢測 & 驗證

執行命令進行ESLint檢測:

npm run lint:eslint

ESLint 保存自動檢測

打開 File → Preferences → Settings 搜索 Editor: Code Actions On Save 選擇 Workspace標簽設置工作區,點擊 Edit in settings.json

{
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true // 開啟eslint自動檢測
  }
}

Prettier 代碼格式化

Prettier 一個“有態度”的代碼格式化工具。

Prettier 安裝

安裝 Prettier 插件

VSCode 插件市場搜索 Prettier - Code formatter 插件安裝

安裝 Prettier 依賴

npm install -D prettier

Prettier 配置

Prettier 配置 (.prettierrc.cjs)

根目錄創建.prettierrc.cjs 文件,複製 官方預設配置 (詳細配置:Prettier 中文網 - Options

module.exports = {
  // (x)=>{},單個參數箭頭函數是否顯示小括弧。(always:始終顯示;avoid:省略括弧。預設:always)
  arrowParens: "always",
  // 開始標簽的右尖括弧是否跟隨在最後一行屬性末尾,預設false
  bracketSameLine: false,
  // 對象字面量的括弧之間列印空格 (true - Example: { foo: bar } ; false - Example: {foo:bar})
  bracketSpacing: true,
  // 是否格式化一些文件中被嵌入的代碼片段的風格(auto|off;預設auto)
  embeddedLanguageFormatting: "auto",
  // 指定 HTML 文件的空格敏感度 (css|strict|ignore;預設css)
  htmlWhitespaceSensitivity: "css",
  // 當文件已經被 Prettier 格式化之後,是否會在文件頂部插入一個特殊的 @format 標記,預設false
  insertPragma: false,
  // 在 JSX 中使用單引號替代雙引號,預設false
  jsxSingleQuote: false,
  // 每行最多字元數量,超出換行(預設80)
  printWidth: 120,
  // 超出列印寬度 (always | never | preserve )
  proseWrap: "preserve",
  // 對象屬性是否使用引號(as-needed | consistent | preserve;預設as-needed:對象的屬性需要加引號才添加;)
  quoteProps: "as-needed",
  // 是否只格式化在文件頂部包含特定註釋(@prettier| @format)的文件,預設false
  requirePragma: false,
  // 結尾添加分號
  semi: true,
  // 使用單引號 (true:單引號;false:雙引號)
  singleQuote: false,
  // 縮進空格數,預設2個空格
  tabWidth: 2,
  // 元素末尾是否加逗號,預設es5: ES5中的 objects, arrays 等會添加逗號,TypeScript 中的 type 後不加逗號
  trailingComma: "es5",
  // 指定縮進方式,空格或tab,預設false,即使用空格
  useTabs: false,
  // vue 文件中是否縮進 <style> 和 <script> 標簽,預設 false
  vueIndentScriptAndStyle: false,
};

格式化忽略配置( .prettierignore)

根目錄新建 .prettierignore 文件,添加忽略配置如下:

dist
node_modules
public
.husky
.vscode
.idea
*.sh
*.md

src/assets

prettier 格式化指令

package.json 添加 prettier 格式化指令:

  "scripts": {
    "lint:prettier": "prettier --write \"**/*.{js,ts,json,css,less,scss,vue,html,md}\""
  }

Prettier 格式化

Prettier 格式化 & 驗證

執行命令進行 Prettier 代碼格式化:

npm run lint:prettier

Prettier 保存自動格式化

VSCode 的 settings.json 配置:

{
  "editor.formatOnSave": true, // 保存格式化文件
  "editor.defaultFormatter": "esbenp.prettier-vscode" // 指定 prettier 為所有文件預設格式化器
}

驗證保存自動格式化

Stylelint CSS 檢測

Stylelint 一個強大的 CSS linter(檢查器),可幫助您避免錯誤並強制執行約定。官方網站: https://stylelint.io

註意官網明確指出 Stylelint 作為 CSS 代碼規範檢測而不作為代碼格式化工具使用(Prettier 是更好的選擇),新版本(15.0.0)為此廢棄相關的 rules

Stylelint 安裝

安裝 Stylelint 插件

VSCode 插件搜索 Stylelint 並安裝

安裝 Stylelint 依賴

pnpm install -D stylelint stylelint-config-standard stylelint-config-recommended-scss stylelint-config-recommended-vue postcss postcss-html postcss-scss stylelint-config-recess-order stylelint-config-html
依賴 說明 備註
stylelint stylelint 核心庫 stylelint
stylelint-config-standard Stylelint 標準共用配置 stylelint-config-standard 文檔
stylelint-config-recommended-scss 擴展 stylelint-config-recommended 共用配置併為 SCSS 配置其規則 stylelint-config-recommended-scss 文檔
stylelint-config-recommended-vue 擴展 stylelint-config-recommended 共用配置併為 Vue 配置其規則 stylelint-config-recommended-vue 文檔
stylelint-config-recess-order 提供優化樣式順序的配置 CSS 書寫順序規範
stylelint-config-html 共用 HTML (類似 HTML) 配置,捆綁 postcss-html 並對其進行配置 stylelint-config-html 文檔
postcss-html 解析 HTML (類似 HTML) 的 PostCSS 語法 postcss-html 文檔
postcss-scss PostCSS 的 SCSS 解析器 postcss-scss 文檔,支持 CSS 行類註釋

Stylelint 配置

Stylelint 配置(.stylelintrc.cjs)

根目錄新建 .stylelintrc.cjs 文件,配置如下:

module.exports = {
  // 繼承推薦規範配置
  extends: [
    "stylelint-config-standard",
    "stylelint-config-recommended-scss",
    "stylelint-config-recommended-vue/scss",
    "stylelint-config-html/vue",
    "stylelint-config-recess-order",
  ],
  // 指定不同文件對應的解析器
  overrides: [
    {
      files: ["**/*.{vue,html}"],
      customSyntax: "postcss-html",
    },
    {
      files: ["**/*.{css,scss}"],
      customSyntax: "postcss-scss",
    },
  ],
  // 自定義規則
  rules: {
    // 允許 global 、export 、v-deep等偽類
    "selector-pseudo-class-no-unknown": [
      true,
      {
        ignorePseudoClasses: ["global", "export","v-deep", "deep"],
      },
    ],
  },
};

Stylelint 忽略配置(.stylelintignore)

根目錄創建 .stylelintignore 文件,配置忽略文件如下:

dist
node_modules
public
.husky
.vscode
.idea
*.sh
*.md

src/assets

Stylelint 檢測指令

package.json 添加 Stylelint 檢測指令:

  "scripts": {
      "lint:stylelint": "stylelint  \"**/*.{css,scss,vue,html}\" --fix"
  }

Stylelint 檢測

Stylelint 檢測 & 驗證

執行以下命令完成

npm run lint:stylelint

驗證

StyleLint 保存自動檢測

VSCode 的 settings.json 配置內容如下:

{
  "editor.codeActionsOnSave": {
    "source.fixAll.stylelint": true // 開啟 Stylelint 保存自動檢測
  },
  // Stylelint 校驗文件
  "stylelint.validate": ["css", "scss", "vue", "html"]
}

為了驗證把尺寸屬性 width 放置在定位屬性 position 前面,根據 CSS 書寫順序規範 推斷是不符合規範的,在保存時 Stylelint 自動將屬性重新排序,達到預期。

EditorConfig 編輯器配置

EditorConfig 主要用於統一不同 IDE 編輯器的編碼風格。官方網站: https://editorconfig.org/

安裝 EditorConfig 插件

VSCode 搜索 EditorConfig for VS Code 插件並安裝

配置 EditorConfig

根目錄創建 .editorconfig 文件,添加配置如下:

# http://editorconfig.org
root = true

# 表示所有文件適用
[*]
charset = utf-8 # 設置文件字元集為 utf-8
end_of_line = lf # 控制換行類型(lf | cr | crlf)
indent_style = tab # 縮進風格(tab | space)
insert_final_newline = true # 始終在文件末尾插入一個新行

# 表示僅 md 文件適用以下規則
[*.md]
max_line_length = off # 關閉最大行長度限制
trim_trailing_whitespace = false # 關閉末尾空格修剪

項目源碼

完整項目源碼地址如下,如果有相關問題可以通過項目 關於我們 添加交流群。

Gitee Github
倉庫地址 vue3-element-admin vue3-element-admin

關於我們

如果交流群二維碼過期,請添加我的微信備註 vue3 拉你進群

微信交流群 我的微信


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 因為從2021 年11 月1 日起,用戶無法從中國大陸地區使用Yahoo 產品與服務 所以下麵兩個錯誤,都是代理配置的問題 error:No timezone found, symbol may be delisted error:No data found for this date range, ...
  • 為了實現面向對象程式設計(OOP)的封裝這個特性,需要程式設計語言提供一定的語法機制來支持。這個語法機制就是訪問許可權控制(訪問修飾符:public、protected、private、default)。 ...
  • .NET 實現 JWT 登錄驗證 在現代 Web 應用程式中,身份驗證和授權是必不可少的功能。JSON Web Token (JWT) 是一種廣泛使用的身份驗證和授權機制,它可以用於安全地傳輸用戶信息和授權數據。在本篇博文中,我們將學習如何在 C# .NET 中實現 JWT 登錄驗證,並處理用戶信息 ...
  • 最近由於項目需要,需要給每個用戶分配一個充幣地址,考慮到錢包安全性和方便管理,於是自己動手寫了一個本地網頁版的錢包,附上源代碼跟大家交流下。 Github 源代碼地址 錢包和項目是分離的,項目通過鑒權訪問錢包的介面,主要實現了以下功能: 1、可以導入助記詞、私鑰,也可以隨機生成臨時私鑰; 2、一套助 ...
  • 包 CommunityToolkit.Mvvm (又名 MVVM 工具包,以前名為 Microsoft.Toolkit.Mvvm) 是一個現代、快速且模塊化的 MVVM 庫。 它是 .NET 社區工具包的一部分,圍繞以下原則構建: 平臺和運行時獨立 - .NET Standard 2.0、 .NET ...
  • 作者:盧文雙 資深資料庫內核研發 去年年底通過微信公眾號【資料庫內核】設定了一個目標——2023 年要寫一系列 特性介紹+內核解析 的文章(現階段還是以 MySQL 為主)。 雖然關註者很少,但本著“說到就要做到”的原則,從這篇就開始了。 序言: 以前對 MySQL 測試框架 MTR 的使用,主要集 ...
  • Redis命令 1.Redis數據結構介紹 Redis是一個key-value的資料庫,key一般是String類型,value的類型多種多樣,value常見的八種類型: Redis支持五種基本的數據類型:string(字元串),hash(哈希),list(列表),set(集合)及zset(sort ...
  • 影響MySQL查詢性能的因素有很多,我們經常會對查詢語句、索引欄位做一些優化,而其實在表設計的階段就可能產生一些問題。對於表設計,可以對錶結構進行優化,也可以對錶欄位進行優化。以下通過一個具體的案例演示一些常用的表設計優化的方法。 一、業務需求 這裡,就以學生-教師-課程業務作為示例。資料庫需要存放 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...