新專案了
渾渾噩噩一個五年前的vue2的專案維護了一年多,要開始重構了。前端還是vue2,要加個後臺系統來管理配置化功能。後臺管理就撿起vue3吧,好久沒寫了,看看有啥新東西玩,有空了再更新一下部落格。
Vite搭建
之前寫了個用vue-cli來搭建的(vue-cli腳手架搭建vue3.0+typescripe專案),還是Vue3剛出來那會踩的坑,現在vite逐漸成熟,效能、速度也比webpack要好,也來踩踩的。
Vite官網已經寫的很詳細了,不贅述,無坑。
yarn create vite vue-app --template vue-ts
eslint
先安裝eslint
yarn add -D eslint
建立.eslintrc.js
先來點基本配置
module.exports = {
root: true,
env: {
node: true,
browser: true,
es2021: true,
},
parserOptions: {
ecmaVersion: 12,
},
}
引入規則
我這裡就用幾個官方規範吧,下面總是要自己配置一堆的,也可以用其他的優秀開源規範(Airbnb)
yarn add -D eslint-plugin-vue
.eslintrc中extends新增'plugin:vue/vue3-recommended'
Airbnb
如果要用Airbnb,需要安裝eslint-config-airbnb-base
和eslint-plugin-import
yarn add -D eslint-config-airbnb-base eslint-plugin-import
.eslintrc中extends新增'airbnb-base'
配合prettier
yarn add -D eslint-plugin-prettier eslint-config-prettier
yarn add -D -E prettier
.eslintrc差不多就寫成這樣
……
extends: [
'plugin:vue/vue3-recommended',
'eslint:recommended',
'plugin:prettier/recommended'
],
plugins: [ 'prettier'],
rules: {
'prettier/prettier': 0,
}
……
對ts的支援
yarn add -D @typescript-eslint/eslint-plugin @typescript-eslint/parser
.eslintrc中新增配置
plugins: ['@typescript-eslint'],
parserOptions: {
parser: '@typescript-eslint/parser'
}
.eslintrc.js
至此,eslint配置完成,可以正常使用,上程式碼
module.exports = {
root: true,
env: {
node: true,
es2021: true,
browser: true
},
extends: [
'plugin:vue/vue3-recommended',
'eslint:recommended',
'plugin:prettier/recommended'
],
plugins: ['@typescript-eslint', 'prettier'],
parserOptions: {
parser: '@typescript-eslint/parser',
ecmaVersion: 12
},
rules: {
'prettier/prettier': 0,
……
}
}
在頁面上檢視eslint報錯
強逼迫福音,經常有時候沒注意看命令列,報錯就一直留下來,提交程式碼也會被攔住。新增vite-plugin-eslint
外掛即可
在vite.config.ts中配置
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import eslintPlugin from 'vite-plugin-eslint'
export default defineConfig({
plugins: [
vue(),
eslintPlugin({
exclude: ['./node_modules/**'],
cache: false
})
]
})
記筆記!cache
這個屬性一定要帶上false
,否則修復的問題還是會不停報出來錯,有毒。
使用setup sugar的坑
<script setup>
支援不return直接用,使用eslint舊版會報錯
'xxx' is assigned a value but never used.
在.eslintrc配置'no-unused-vars': [0]
可解決
我試了新版本沒有這個問題,在template裡面使用變數就不會標紅報錯