本文介紹 vue3-element-admin 如何通過ESLint 檢測 JS/TS 程式碼、Prettier 格式化程式碼、Stylelint 檢測 CSS/SCSS 程式碼和設定 EditorConfig 來全方位約束和統一前端程式碼規範。
ESLint 可組裝的JavaScript和JSX檢查工具,目標是保證程式碼的一致性和避免錯誤。
VSCode 外掛市場搜尋 ESLint 外掛並安裝
npm i -D eslint
執行命令完成 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: {},
};
在預設設定基礎上需要修改解析器為 vue-eslint-parser
,不然在檢測執行中出現 error Parsing error: '>' expected
的解析錯誤,修改 .eslintrc.cjs
如下:
根目錄新建 .eslintignore
檔案,新增忽略檔案, ESLint 校驗會忽略這些檔案,設定如下:
dist
node_modules
public
.husky
.vscode
.idea
*.sh
*.md
src/assets
.eslintrc.cjs
.prettierrc.cjs
.stylelintrc.cjs
package.json 新增 eslint 檢測指令:
"scripts": {
"lint:eslint": "eslint \"src/**/*.{vue,ts,js}\" --fix"
}
執行命令進行ESLint
檢測:
npm run lint: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 一個「有態度」的程式碼格式化工具。
VSCode 外掛市場搜尋 Prettier - Code formatter
外掛安裝
npm install -D prettier
根目錄建立.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 檔案,新增忽略設定如下:
dist
node_modules
public
.husky
.vscode
.idea
*.sh
*.md
src/assets
package.json 新增 prettier 格式化指令:
"scripts": {
"lint:prettier": "prettier --write \"**/*.{js,ts,json,css,less,scss,vue,html,md}\""
}
執行命令進行 Prettier 程式碼格式化:
npm run lint:prettier
VSCode 的 settings.json
設定:
{
"editor.formatOnSave": true, // 儲存格式化檔案
"editor.defaultFormatter": "esbenp.prettier-vscode" // 指定 prettier 為所有檔案預設格式化器
}
驗證儲存自動格式化
Stylelint 一個強大的 CSS linter(檢查器),可幫助您避免錯誤並強制執行約定。官方網站: https://stylelint.io
注意官網明確指出 Stylelint 作為 CSS 程式碼規範檢測而不作為程式碼格式化工具使用(Prettier 是更好的選擇),新版本(15.0.0)為此廢棄相關的 rules
VSCode 外掛搜尋 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 行類註釋 |
根目錄新建 .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"],
},
],
},
};
根目錄建立 .stylelintignore 檔案,設定忽略檔案如下:
dist
node_modules
public
.husky
.vscode
.idea
*.sh
*.md
src/assets
package.json 新增 Stylelint 檢測指令:
"scripts": {
"lint:stylelint": "stylelint \"**/*.{css,scss,vue,html}\" --fix"
}
執行以下命令完成
npm run lint:stylelint
驗證
VSCode 的 settings.json
設定內容如下:
{
"editor.codeActionsOnSave": {
"source.fixAll.stylelint": true // 開啟 Stylelint 儲存自動檢測
},
// Stylelint 校驗檔案
"stylelint.validate": ["css", "scss", "vue", "html"]
}
為了驗證把尺寸屬性 width 放置在定位屬性 position 前面,根據 CSS 書寫順序規範 推斷是不符合規範的,在儲存時 Stylelint 自動將屬性重新排序,達到預期。
EditorConfig 主要用於統一不同 IDE 編輯器的編碼風格。官方網站: https://editorconfig.org/
VSCode 搜尋 EditorConfig for VS Code
外掛並安裝
根目錄建立 .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
拉你進群
微信交流群 | 我的微信 |
---|---|