一步一步實現中後臺管理平臺模板-14-Vue開發工具配置和使用Vetur, ESLint, Prettier, StyleLint

一,前言

上一篇解決了IE瀏覽器兼容問題
到目前已經更新了13篇,但對於開發工具的配置和使用還隻字未提
一方面開發工具越早啓用越好,有利於代碼規範和開發體驗的優化
但不寫一些有問題的代碼就沒辦法表現出開發工具的效果和好處
到目前位置,其實已經有意無意的加入了一些"有問題"的代碼

本篇,就來介紹Vue開發中實用且能夠有效提高開發效率,保證編碼規範的工具
ps:創建工程時已經選擇了使用ESLint + Prettier

二,常用開發工具

首先就是IDE的選擇,隨着前端這幾年的野蠻生長,IDE也是換了又換,sublime,webstorm,vscode...
目前多數使用vscode,少數webstorm,IDE這部分就選擇開源免費的vscode

選擇vscode的原因不僅僅因爲其開源免費,其本身還提供了大量插件且支持自開發插件,配置靈活
例如Vetur插件爲Vue提供了語法高亮,標籤補全,模板生成,Lint檢查,格式化...等等功能

編碼規範方面可使用ESLint做代碼規範和錯誤檢查,幫助開發者及時發現不符合規範或錯誤的代碼

使用prettier做代碼格式化工具,統一多人開發下的代碼格式,功能與ESLint有重疊,但二者專注點不同
ESLint專注於代碼校驗,Prettier則專注於代碼格式的美化

StyleLint是一款CSS代碼檢查工具,有助於開發者統一CSS代碼規範,避免樣式錯誤
stylelint能夠解析 SCSS,Sass,Less 等類 CSS 語法,和識別最新CSS語法,支持開發者自定義規則
stylelint提供的近百項配置主要分爲3類:校對風格,判別代碼可維護性,判斷代碼錯誤

Vue DevTools官方調試工具,它集成了Vuex的調試功能,遠程調試及性能分析功能

這裏我們將針對Vetur, ESLint, Prettier, StyleLint的配置和使用做詳細介紹
目的是實現統一的編碼規範,編碼風格,改善團隊開發中存在的編碼差異

ps:DevTools的使用在另一篇文章已有介紹


三,安裝Vetur, ESLint, Prettier, StyleLint

Vetur:vetur
ESLint, Prettier

使用Vue-cli創建工程時,已經選擇自動安裝ESLint, Prettier

package.json:

}
  ...
  "devDependencies": {
    "@vue/cli-plugin-eslint": "^3.9.0",
    // 避免eslint和prettier之間衝突
    "@vue/eslint-config-prettier": "^4.0.1",
    "babel-eslint": "^10.0.1",
    "eslint": "^5.16.0",
    "eslint-plugin-vue": "^5.0.0",
    ...
  },
  ...
}

關於ESLint, Prettier的配置可以通過根目錄下.eslintrc.js和.prettierrc.js進行配置

默認無.prettierrc.js文件(部分prettier配置可在eslint中實現)
改變Prettier默認配置,只需在根目錄下新建一個.prettierrc.js文件

默認.eslintrc.js:

module.exports = {
  root: true,
  env: {
    node: true
  },
  extends: ["plugin:vue/essential", "@vue/prettier"],
  rules: {
    "no-console": process.env.NODE_ENV === "production" ? "error" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off"
  },
  parserOptions: {
    parser: "babel-eslint"
  }
};
extends數組,後面繼承前面,引入eslint-plugin-vue插件,並開啓essential系列規則
eslint-plugin-vue提供了四個規則:
	base,essential,strongly-recommended,recommended後面的規則前面規則的拓展
	推薦使用strongly-recommended
StyleLint
使用vue-cli搭建項目時,沒有stylelint相關選項,需要自己安裝

安裝StyleLint:

npm i -D stylelint stylelint-config-standard stylelint-webpack-plugin

Webpack插件stylelint-webpack-plugin:

在編譯之前對源代碼中的 css 代碼進行檢查

四,VSCode-Setting配置

{
    "extensions.ignoreRecommendations": false,
    "team.showWelcomeMessage": false,
    "git.enableSmartCommit": true,
    "vsicons.dontShowNewVersionMessage": true,
    "git.autofetch": true,
    "react.beautify.onSave": true,
    "files.associations": {
        "*.js": "javascriptreact"
    },
    "git.confirmSync": false,
    "explorer.confirmDelete": false,
    "[markdown]": {},
    "eslint.enable": true,
    // 配置eslint支持.vue文件
    "eslint.options": {
        "extensions": [
            ".js",
            ".jsx",
            ".vue"
        ]
    },
    "eslint.validate": [
        "javascript",
        "javascriptreact",
        {
            "language": "vue",
            "autoFix": true
        }
    ],
    // 關閉模板校驗(與本地ESLint衝突)
    "vetur.validation.template": false,
    "eslint.autoFixOnSave": true,
    "editor.tabSize": 2,
    "jest.autoEnable": false,
    "jest.pathToConfig": "./.jest.js",
    "terminal.integrated.rendererType": "dom",
    "window.zoomLevel": 0,
    "editor.quickSuggestions": {
        "strings": true
    },
    "diffEditor.renderSideBySide": true
}

五,配置ESLint

在eslint默認配置.eslintrc.js中,使用了essential規則,並添加@vue/prettier防止衝突
Vue提供了多種規格的校驗方式,可根據需要選擇,essential是最基礎的

extends: ["plugin:vue/essential", "@vue/prettier"]

實際項目中,推薦使用strongly-recommended開啓類型校驗

extends: ["plugin:vue/strongly-recommended", "@vue/prettier"]

1)在ECharts一篇中,我們創裝了一個Chart.vue組件,其中props參數並沒有定義參數類型和默認值:
strongly-recommended1
此時,會提示需要定義類型(還需要定義默認值)
strongly-recommended2
2)組件傳參-參數名規範(prop名稱大小寫)

在聲明prop時,命名應始終使用camelCase(駝峯)
而在模板和 JSX 中應始終使用 kebab-case(橫線命名)
即:在 JavaScript 中是 camelCase,在 HTML 中則是 kebab-case

參數使用駝峯命名將產生警告:
props
需統一使用小寫加"-"連接符
props_fix
2)定義但未使用警告
no_use
有時候,我們希望允許定義但未使用的變量放在那裏,可修改規則:
eslint_config_unuse
此時,不在報錯
eslint_use
細心的話可以發現,之前vuex字符串使用單引號,保存後自動變爲單號引號

import { mapState } from "vuex";

這是ESLint的又一個功能


3)字符串統一使用雙引號

之前的代碼中,有意提交了一些單引號字符串,這時會產生警告:
單引號
使用了"plugin:vue/strongly-recommended"後,會統一修復爲雙引號


4)語句強制使用分號結束

相比java,在js中代碼可不需要分號結尾,也可以使用分號結尾,這使得代碼風格不統一
end
更多規則可參考: http://eslint.cn/docs/rules/

在eslint規則文檔中,帶扳手圖標的規則eslint可自動修復
不帶該圖標的規則,eslint只給出錯誤或警告,需手動進行修復
忽略檢查配置:

.eslintignore

/build/
/dist/
/*.js
/test/unit/coverage/
使用註釋忽略eslint檢查

整個文件忽略檢查:

/* eslint-disable */
alert('整個文件忽略檢查');

指定代碼塊忽略eslint檢查:

/* eslint-disable */
alert('指定代碼塊忽略檢查');
/* eslint-enable */

指定規則禁用警告

/* eslint-disable no-alert, no-console */
alert('no-alert規則忽略檢查');
console.log('no-console規則忽略檢查');
/* eslint-enable no-alert, no-console */

指定行禁用規則警告(兩種方法):

alert('指定行禁用規則警告'); // eslint-disable-line
 
// eslint-disable-next-line
alert('指定行禁用規則警告');

指定行禁用指定規則警告:

alert('指定行禁用指定規則警告'); // eslint-disable-line no-alert
 
// eslint-disable-next-line no-alert
alert('指定行禁用指定規則警告');

指定行禁用多個規則警告:

alert('指定行禁用多個規則警告'); // eslint-disable-line no-alert, quotes, semi
 
// eslint-disable-next-line no-alert, quotes, semi
alert('指定行禁用多個規則警告');

六,配置StyleLint(還有些問題需要解決)

在src目錄下新建配置文件.stylelintrc.js:

/**
 * 規則: https://stylelint.io/user-guide/rules
 */
module.exports = {
  extends: "stylelint-config-standard",
  rules: {
    // 不允許使用非法的十六進制顏色值
    "color-no-invalid-hex": true,
    // 不允許顏色值大寫
    "color-hex-case": "lower",
    // 允許使用的度量單位是 em、rem、%、s、px
    "unit-whitelist": ["em", "rem", "%", "s", "px"],
    // "rule-empty-line-before": null,
    // "color-hex-length": "long",
    // "declaration-colon-newline-after": null
  }
};

App.vue中添加一條非法的css:

styleLint_bg
此時運行項目控制檯會報錯,並中斷運行:
styleLint_bg_error
如果在熱重載中修改色值爲非法值會在頁面報錯:

styleLint_bg_error2

忽略檢查配置:

.stylelintignore:

# 其他類型文件
*.js
*.jpg
*.png
*.eot
*.ttf
*.woff

# 測試和打包目錄
/test/
/dist/

七,結尾

本篇介紹了Vue開發中的實用工具配置和使用
使用ESLint+StyleLint把控編碼規範和代碼風格,及時檢測錯誤代碼
(StyleLint有些問題,暫時從Vue-FrameWork-Admin中拿掉了)

還可以使用lint-staged,husky插件,利用githook做代碼提交時的校驗
StyleLint還可以規範CSS的屬性順序
還可以在package.josn中創建對應的檢測命令
等等...後續將補充進來

下一篇介紹自動部署,後面等git環境搭建好了再寫一篇前端的CI/CD

八,代碼下載

傳送門:CSDN下載(審覈中)
傳送門:GitHub下載-vue-framework-admin-v0.0.14


維護日誌

20191010:
編寫文章
20191014:
修改部分問題,添加lint忽略文件和註釋,上傳代碼
StyleLint有些問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章