Vite?Vue3?EsLint?Prettier配置步驟極簡方法詳解
使用vite創(chuàng)建一個項目
執(zhí)行命令: yarn create vite
? Project name: 輸入你的項目名稱?(如: esvue)
? Select a framework: 選擇安裝的腳手架 (這里選vue)
vanilla
> vue
react
Done. Now run:
cd esvue
yarn
yarn dev安裝EsLint
yarn add -D eslint
初始化配置EsLint
npx eslint --init
選擇模式: (To check syntax and find problems)
You can also run this command directly using 'npm init @eslint/config'. ? How would you like to use ESLint? ... To check syntax only > To check syntax and find problems To check syntax, find problems, and enforce code style
選擇語言模塊: (選JavaScript modules)
? What type of modules does your project use? ... > JavaScript modules (import/export) CommonJS (require/exports) None of these
選擇語言框架 (選Vue.js)
? Which framework does your project use? ... React > Vue.js None of these
是否使用ts (視自己情況而定,我這里不用選No)
? Does your project use TypeScript? ? No / Yes
代碼在哪里運行 (用空格選中 Browser+Node)
? Where does your code run? ... (Press <space> to select, <a> to toggle all, <i> to invert selection) √ Browser √ Node
您希望您的配置文件是什么格式? (選JavaScript)
? What format do you want your config file to be in? ... > JavaScript YAML JSON
您想現(xiàn)在安裝它們嗎? (選擇Yes)
? Would you like to install them now? ? No / Yes
您要使用哪個軟件包管理器? (選擇yarn)
? Which package manager do you want to use? ... npm > yarn pnpm
安裝完成后 (在項目根目錄會出現(xiàn).eslintrc.js文件)
// .eslintrc.js 文件
// 這里就是上面3步驟初始化的文件,后面的配置都寫這里
module.exports = {
env: {
browser: true,
es2021: true,
node: true
},
extends: "eslint:recommended",
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module'
},
rules: {
}
}繼續(xù)安裝 vite-plugin-eslint
// 說明: 該包是用于配置vite運行的時候自動檢測eslint規(guī)范 // 問題: 不裝這個包可以嗎? 答案是“可以的”,使用yarn dev時并不會主動檢查代碼 yarn add -D vite-plugin-eslint
繼續(xù)安裝 eslint-parser
yarn add -D @babel/core yarn add -D @babel/eslint-parser
繼續(xù)安裝prettier (用于規(guī)范代碼格式,不需要可以不裝)
yarn add -D prettier yarn add -D eslint-config-prettier // eslint兼容的插件 yarn add -D eslint-plugin-prettier // eslint的prettier
配置 vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import eslintPlugin from 'vite-plugin-eslint' //導入包
export default defineConfig({
plugins: [
vue(),
// 增加下面的配置項,這樣在運行時就能檢查eslint規(guī)范
eslintPlugin({
include: ['src/**/*.js', 'src/**/*.vue', 'src/*.js', 'src/*.vue']
})
]
})配置 .prettierrc
如果您沒有安裝第7步驟的那三個包,這個配置你可以忽略跳過
這里主要配置代碼的格式規(guī)范的,有些設置要與.eslintrc.js配置一致,防止沖突
// 在項目根目錄創(chuàng)建文件 .prettierrc
// 以下配置視自己情況而定,并步是每個都需要的
{
tabWidth: 4, // 使用4個空格縮進
semi: false, // 代碼結尾是否加分號
trailingComma: 'none', // 代碼末尾不需要逗號
singleQuote: true, // 是否使用單引號
printWidth: 100, // 超過多少字符強制換行
arrowParens: 'avoid', // 單個參數(shù)的箭頭函數(shù)不加括號 x => x
bracketSpacing: true, // 對象大括號內兩邊是否加空格 { a:0 }
endOfLine: 'auto', // 文件換行格式 LF/CRLF
useTabs: false, // 不使用縮進符,而使用空格
quoteProps: 'as-needed', // 對象的key僅在必要時用引號
jsxSingleQuote: false, // jsx不使用單引號,而使用雙引號
jsxBracketSameLine: false, // jsx標簽的反尖括號需要換行
rangeStart: 0, // 每個文件格式化的范圍是文件的全部內容
rangeEnd: Infinity, // 結尾
requirePragma: false, // 不需要寫文件開頭的 @prettier
insertPragma: false, // 不需要自動在文件開頭插入 @prettier
proseWrap: 'preserve', // 使用默認的折行標準
htmlWhitespaceSensitivity: 'css' // 根據(jù)顯示樣式決定html要不要折行
}配置 .eslintrc.js
module.exports = {
"env": {
"browser": true,
"es2021": true,
"node": true
},
"extends": [
"eslint:recommended", // 使用推薦的eslint
'plugin:vue/vue3-recommended' // 使用插件支持vue3
// 如果你沒有安裝第7步,以下兩個包不要引入,否則報錯
'plugin:prettier/recommended',
'eslint-config-prettier'
],
"parserOptions": {
"ecmaVersion": 13,
"sourceType": "module",
"ecmaFeatures": {
"modules": true,
'jsx': true
},
"requireConfigFile": false,
"parser": '@babel/eslint-parser'
},
// eslint-plugin-vue
'plugins': [
'vue' // 引入vue的插件 vue <==> eslint-plugin-vue
// 這個包需要安裝了第7步的三個包再引入
'prettier' // 引入規(guī)范插件 prettier <==> eslint-plugin-prettier
],
'globals': {
defineProps: 'readonly',
defineEmits: 'readonly',
defineExpose: 'readonly',
withDefaults: 'readonly'
},
// 這里時配置規(guī)則的,自己看情況配置
"rules": {
'semi': ['warn', 'never'], // 禁止尾部使用分號
'no-console': 'warn', // 禁止出現(xiàn)console
'no-debugger': 'warn', // 禁止出現(xiàn)debugger
'no-duplicate-case': 'warn', // 禁止出現(xiàn)重復case
'no-empty': 'warn', // 禁止出現(xiàn)空語句塊
'no-extra-parens': 'warn', // 禁止不必要的括號
'no-func-assign': 'warn', // 禁止對Function聲明重新賦值
'no-unreachable': 'warn', // 禁止出現(xiàn)[return|throw]之后的代碼塊
'no-else-return': 'warn', // 禁止if語句中return語句之后有else塊
'no-empty-function': 'warn', // 禁止出現(xiàn)空的函數(shù)塊
'no-lone-blocks': 'warn', // 禁用不必要的嵌套塊
'no-multi-spaces': 'warn', // 禁止使用多個空格
'no-redeclare': 'warn', // 禁止多次聲明同一變量
'no-return-assign': 'warn', // 禁止在return語句中使用賦值語句
'no-return-await': 'warn', // 禁用不必要的[return/await]
'no-self-compare': 'warn', // 禁止自身比較表達式
'no-useless-catch': 'warn', // 禁止不必要的catch子句
'no-useless-return': 'warn', // 禁止不必要的return語句
'no-mixed-spaces-and-tabs': 'warn', // 禁止空格和tab的混合縮進
'no-multiple-empty-lines': 'warn', // 禁止出現(xiàn)多行空行
'no-trailing-spaces': 'warn', // 禁止一行結束后面不要有空格
'no-useless-call': 'warn', // 禁止不必要的.call()和.apply()
'no-var': 'warn', // 禁止出現(xiàn)var用let和const代替
'no-delete-var': 'off', // 允許出現(xiàn)delete變量的使用
'no-shadow': 'off', // 允許變量聲明與外層作用域的變量同名
'dot-notation': 'warn', // 要求盡可能地使用點號
'default-case': 'warn', // 要求switch語句中有default分支
'eqeqeq': 'warn', // 要求使用 === 和 !==
'curly': 'warn', // 要求所有控制語句使用一致的括號風格
'space-before-blocks': 'warn', // 要求在塊之前使用一致的空格
'space-in-parens': 'warn', // 要求在圓括號內使用一致的空格
'space-infix-ops': 'warn', // 要求操作符周圍有空格
'space-unary-ops': 'warn', // 要求在一元操作符前后使用一致的空格
'switch-colon-spacing': 'warn', // 要求在switch的冒號左右有空格
'arrow-spacing': 'warn', // 要求箭頭函數(shù)的箭頭前后使用一致的空格
'array-bracket-spacing': 'warn', // 要求數(shù)組方括號中使用一致的空格
'brace-style': 'warn', // 要求在代碼塊中使用一致的大括號風格
'camelcase': 'warn', // 要求使用駱駝拼寫法命名約定
'indent': ['warn', 4], // 要求使用JS一致縮進4個空格
'max-depth': ['warn', 4], // 要求可嵌套的塊的最大深度4
'max-statements': ['warn', 100], // 要求函數(shù)塊最多允許的的語句數(shù)量20
'max-nested-callbacks': ['warn', 3], // 要求回調函數(shù)最大嵌套深度3
'max-statements-per-line': ['warn', { max: 1 }], // 要求每一行中所允許的最大語句數(shù)量
"quotes": ["warn", "single", "avoid-escape"], // 要求統(tǒng)一使用單引號符號
"vue/require-default-prop": 0, // 關閉屬性參數(shù)必須默認值
"vue/singleline-html-element-content-newline": 0, // 關閉單行元素必須換行符
"vue/multiline-html-element-content-newline": 0, // 關閉多行元素必須換行符
// 要求每一行標簽的最大屬性不超五個
'vue/max-attributes-per-line': ['warn', { singleline: 5 }],
// 要求html標簽的縮進為需要4個空格
"vue/html-indent": ["warn", 4, {
"attribute": 1,
"baseIndent": 1,
"closeBracket": 0,
"alignAttributesVertically": true,
"ignores": []
}],
// 取消關閉標簽不能自閉合的限制設置
"vue/html-self-closing": ["error", {
"html": {
"void": "always",
"normal": "never",
"component": "always"
},
"svg": "always",
"math": "always"
}]
}
}配置VScode
1、安裝“ESLint”插件【作者: Microsoft】
2、安裝“Prettier ESLint”插件 【作者:Rebecca Vest】
// 配置vscode
// 打開:設置 -> 文本編輯器 -> 字體 -> 在 settings.json 中編輯
// settings.json文件
{
// vscode默認啟用了根據(jù)文件類型自動設置tabsize的選項
"editor.detectIndentation": false,
// 重新設定tabsize
"editor.tabSize": 2,
// 每次保存的時候自動格式化
"editor.formatOnSave": true,
// 每次保存的時候將代碼按eslint格式進行修復
"eslint.autoFixOnSave": true,
// 添加vue支持
"eslint.validate": [
"javascript",
"javascriptreact",
{
"language": "vue",
"autoFix": true
}
],
// #讓prettier使用eslint的代碼格式進行校驗
"prettier.eslintIntegration": true
}其它
(整個流程下來安裝的包)
"devDependencies": {
// eslint解析相關的包
"@babel/core": "^7.18.2",
"@babel/eslint-parser": "^7.18.2",
// eslint相關的包
"eslint": "^8.17.0",
"eslint-plugin-vue": "^9.1.0",
"vue-eslint-parser": "^9.0.2",
"vite-plugin-eslint": "^1.6.1",
// prettier相關的包
"prettier": "^2.6.2",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.0.0",
}寄語
個人不太喜歡prettier, 有時候還是喜歡按照自己的格式
比如說有很多配置項,我需要在每個配置加上注釋,并且讓注釋對齊,
如果你使用了prettier你的注釋是沒辦法對齊的,會自動縮回去
以上就是Vite Vue3 EsLint Prettier配置步驟極簡方法詳解的詳細內容,更多關于Vite Vue3 EsLint Prettier配置步驟的資料請關注腳本之家其它相關文章!
相關文章
Element ui table表格內容超出隱藏顯示省略號問題
這篇文章主要介紹了Element ui table表格內容超出隱藏顯示省略號問題,具有很好的參考價值,希望對大家有所幫助,2023-11-11
vue項目實例中用query傳參如何實現(xiàn)跳轉效果
這篇文章主要介紹了vue項目實例中用query傳參如何實現(xiàn)跳轉效果,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10

