網上有一大堆關於格式化vue
代碼的方法,但基本都配合使用了prettier
格式化插件,相信搗鼓過的同窗確定會跟我同樣都有一種感覺:雜亂!prettier
插件在使用的時候須要與eslint
配合使用,二者在一塊兒使用的話不只會產生衝突(你須要額外在prettier
規則配置裏配置上和eslint
同樣的規則),並且二者功能重疊(二者在一塊兒工做的原理也是在eslint --fix
之後再用prettier
去格式化代碼)。eslint --fix
已經能幫你格式化出一套漂亮的vue代碼,再用prettier
就顯得畫蛇添足。javascript
其實,要想統一併寫出一手漂亮的vue
代碼,最簡單直接的辦法就是按照vue
官方提供的vue風格指南,配合官方提供的配套的校驗插件 eslint-plugin-vue,再在VSCode
中安裝vetur
和eslint
插件便可。css
vetur 是vue
官方提供的支持vue
編寫風格的VSCode
插件。具體的安裝很簡單,這裏我就介紹幾個vetur
經常使用的功能:html
支持多種語言,包括但不侷限於ts
、coffee
。vue
當你新建一個vue
文件時,你能夠經過輸入scaffold
快速生成以下代碼:java
<template>
</template>
<script>
export default {
}
</script>
<style>
</style>
複製代碼
或者經過輸入template
、script
、style
,生成相應的html
、script
、style
代碼。react
vetur
集成了 emmet 插件,好比輸入div.a
回車就變成<div class="a"></div>
。emmet
還有不少功能,想要了解更多的同窗能夠上emmet
官網逛逛。webpack
可以靜態的檢測template
、script
、style
中的語法錯誤。git
vetur
官方建議配合prettier
來進行代碼格式化,但本文並不採起prettier
來進行代碼的格式化,有興趣的同窗能夠去瀏覽vetur
官網。github
vetur
集成了vue
的語法,因此當你在編寫一些vue
具備的指令、事件或者生命週期等一切屬於vue
的語法時,都會對你進行智能化的提示,從而讓你快速的編寫出vue代碼。web
vetur
還對一些框架有支持,好比vue-router
、element-ui
等,能給這些框架提供自動補全屬性的功能。
VSCode
中的eslint
插件將使用安裝在當前打開的工做區文件夾中的eslint
庫,也就是會讀取你當前項目的eslint
配置信息。若是你的eslint
配置是寫在.eslintrc.js
文件中,則VSCode
中的eslint
插件將會讀取.eslintrc.js
文件的配置信息來對你的代碼作靜態分析,並標記出不符合規範的代碼片斷。
安裝完eslint
插件之後,咱們須要在VSCode
配置中添加幾個選項:
"eslint.validate": [
"javascript",
"javascriptreact",
{
"language": "vue",
"autoFix": true
}
],
"eslint.autoFixOnSave": true
複製代碼
配置好這兩個選項後,VSCode
就能靜態的對vue
代碼進行檢查,並提示有不符合規範的地方,而且當文件保存時,將自動修復不符合規範的地方。
代碼中不只須要js
的eslint
還須要vue
的eslint
。
npm install --save-dev eslint eslint-plugin-vue
複製代碼
eslint-plugin-vue
這個插件的做用是能用eslint
按照官方提供的風格指南來校驗.vue
文件的template
和script
裏的代碼。eslint-plugin-vue
提供了一系列的規則供開發者們參考。
根目錄下新建.eslintrc.js
文件,並寫入:
module.exports = {
extends: [
// add more generic rulesets here, such as:
'eslint:recommended',
'plugin:vue/essential'
],
rules: {
// override/add rules settings here, such as:
// 'vue/html-self-closing': 'off'
}
}
複製代碼
配合第二步,VSCode
就能夠按照vue
風格指南對.vue
文件的script
片斷進行eslint
和vue
風格指南靜態校驗。
雖然script
片斷統一了風格,可是每一個人寫template
的風格也不同,若是還想約束並校驗template
的風格,則將上述的配置修改成:
module.exports = {
extends: [
...,
'plugin:vue/recommended'
]
}
複製代碼
當你修改保存時,VSCode
就會對你代碼裏的template
和script
裏的代碼進行eslint
自動修復。
同VSCode
中的eslint
同樣,stylelint
也將會按照你工做區中的stylelint
配置文件對代碼中的樣式作靜態檢查,並標記不符合規範的代碼片斷。
在VSCode
中安裝完插件之後,stylelint
建議咱們作以下配置,來防止其餘報錯衝突:
"css.validate": false,
"scss.validate": false,
"less.validate": false
複製代碼
遺憾的是,stylelint
不能提供保存自動修復的功能。
npm install --save-dev stylelint stylelint-standard stylelint-recommended-scss
複製代碼
根目錄下新建.stylelintrc.js
文件,並寫入:
module.exports = {
'extends': [
// add more generic rulesets here, such as:
'stylelint-config-standard',
"stylelint-config-recommended-scss"
],
'rules': {
// override/add rules settings here, such as:
// 'declaration-block-semicolon-newline-after': 'always' // 不容許多條 css 規則寫在一行
}
}
複製代碼
因爲VSCode
不能在保存的時候自動修復不合規範的樣式代碼,因此咱們能夠經過兩種方式來修復:
在package.json
中配置:
"lintstyle": "stylelint 'src/**/*.{vue,css,scss,sass}' --fix"
複製代碼
執行npm run lintstyle
指令就能修復指定文件的不合規範的樣式代碼。
在vue-cli3
中安裝 @ascendancyy/vue-cli-plugin-stylelint 插件,而後在vue.config.js
文件中配置:
pluginOptions: {
lintStyleOnBuild: true, // 構建時是否檢查錯誤
stylelint: {
fix: true, // 構建時是否自動修復
files: ['src/**/*.{vue,htm,html,css,sss,less,scss}'] // 指定文件
}
}
複製代碼
項目啓動的時候會檢查不合樣式規範的代碼並修復,而且在每次修改保存後,觸發構建的同時,也將修復代碼中不合規範的樣式。
本文的目的也是爲了讓用VSCode
開發Vue
的同窗們再也不被其餘的插件搞得亂七八糟,只須要eslint
和stylelint
,不須要下載額外的格式化插件,也不須要額外的繁瑣的配置,按照上述幾步,就能很輕鬆的格式化出一套統一標準的Vue
代碼。