無論是一人開發或是多人協作,寫出來的程式碼可能會有一些差異。為了讓程式碼比較好維護、閱讀,可以利用 ESLint 與 stylelint 這兩個工具來幫助我們保持良好的 Coding Style。本篇主旨是要說明在 Nuxt.js 專案中使用的方式、設定與筆者選用的規則。
以上兩個擴充套件在前端專案都是必備的工具,工具非常有彈性可視需要自行調整規範。前端專案都應該要使用這兩個工具來規範程式碼風格,並依照自已團隊的需要調整制定自已的規範。
目前專案選用規則
npm install --save-dev babel-eslint eslint eslint-loader
npm install --save-dev eslint-plugin-vue
npm install --save-dev eslint-config-standard eslint-plugin-standard eslint-plugin-promise eslint-plugin-import eslint-plugin-node
步驟1~3可以一次安裝,分開寫是為了更清楚了解安裝套件的用途為何
module.exports = {
root: true,
env: {
browser: true,
node: true
},
parserOptions: {
parser: 'babel-eslint'
},
extends: [
'eslint:recommended',
'plugin:vue/recommended',
'standard'
],
plugins: [
'vue'
],
rules: {},
globals: {
$: 'readonly',
moment: 'readonly'
}
}
extends 設定啟用檢查的規則,可使用共享配置的套件或 plugins 的設定。共享配置的套件名稱的前綴會是 eslint-config-,設定時可以省略前綴。plugins 設定則為 plugin:套件名稱去掉前綴/規則組合(例如:plugin:vue/recommended)。
plugins 設定要使用的 plugins 套件,一般套件名稱的前綴會是 eslint-plugins-,設定時可以省略前綴進行設定,此處的 vue 指的就是第二步驟安裝的 eslint-plugins-vue
rules 已啟用的規則需要調整的話可以在這邊增加設定,這裡的設定會覆蓋原設定
globals 用來設定全域載入的套件。由於在 nuxt.config.js 有設定 webpack.ProvidePlugin 載入 jquery 跟 moment 因此在所有程式碼都可直接使用 $ 與 moment 不需另外 import
目前專案選用規則
npm install --save-dev stylelint stylelint-scss
npm install --save-dev stylelint-config-standard
npm install --save-dev stylelint-config-prettier
npm install --save-dev stylelint-order
{
"extends": [
"stylelint-config-standard",
"stylelint-config-prettier",
"stylelint-config-sass-guidelines"
],
"plugins": ["stylelint-scss", "stylelint-order"],
"rules": {
"max-nesting-depth": 3
},
"ignoreFiles": [
"./node_modules/**/*.{css,scss,sass}",
"./dist/**/*.{css,scss,sass}"
]
}
extends 設定啟用檢查的規則,可使用共享配置的套件
plugins 增加 stylelint 規則的套件
rules 已啟用的規則需要調整的話可以在這邊增加設定,這裡的設定會覆蓋原設定
ignoreFiles 排除要檢查的檔案,目前排除的是 npm 安裝的套件與 webpack 打包後產出的資料夾
工作區設定(/.vscode/settings.json) - 啟用儲存檔案時,自動修正 eslint 與 stylelint 問題
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.fixAll.stylelint": true
}
}
開啟 package.json 檔案,在 scripts 內增加以下設定
{
"scripts": {
"lint:js": "eslint --ext .js,.vue --ignore-path .gitignore .",
"lintfix:js": "eslint --fix --ext .js,.vue --ignore-path .gitignore .",
"lint:css": "npx stylelint '**/*.{css,scss,sass,vue}'",
"lintfix:css": "npx stylelint '**/*.{css,scss,sass,vue}' --fix"
}
}
使用指令執行 eslint 檢查
npm run lint:js
使用指令執行 eslint 檢查,並修復可自動修復問題
npm run lintfix:js
使用指令執行 stylelint 檢查
npm run lint:css
使用指令執行 stylelint 檢查,並修復可自動修復問題
npm run lintfix:css
注意事項:要使用 stylelint 指令需要將 nodejs 版本必需為 10.13 以上(含10.13)版本,因為目前的 stylelint 版本只支援 nodejs 10.13 以上,但這不影響 vs code 擴充套件 stylelint 檢查的結果。在較低版本的 nodejs 還是可以使用 vs code 擴充套件 stylelint 來檢查,只是規則的來源是 .stylelintrc.json 的設定。
Nuxt.js - ESLint and Prettier
ESLint
JavaScript Standard Style
eslint-plugin-vue
eslint-config-standard
stylelint
stylelint-config-standard
stylelint-config-prettier
stylelint-config-sass-guidelines
stylelint-order
stylelint-scss