近日接手了一個項目,格式混亂不堪,由於要多人開發,想配置下校驗規則和自動格式化。javascript
插件的做用就是輔助開發工具VSCode,不然就只能經過命令行去運行ESLint進行校驗,經過命令行運行Prettier進行格式化。html
須要手動操做格式化,或者配置保存自動格式化,格式化插件有多個的話,須要配置默認格式化插件 java
create-react-app項目已經安裝過ESLint了,無需再次安裝react
同上git
yarn add --dev eslint-config-airbnb
複製代碼
yarn add --dev eslint-config-prettier
複製代碼
yarn add --dev eslint-plugin-prettier
複製代碼
yarn add prettier --dev --exact
複製代碼
項目下建立 .eslintrc.js 文件github
module.exports = {
extends: [
'react-app', // react幫配置好了一些語法,譬如箭頭函數
'airbnb',
'plugin:prettier/recommended', // prettier配置
],
rules: {
'react/jsx-filename-extension': 'off', // 關閉airbnb對於jsx必須寫在jsx文件中的設置
'react/prop-types': 'off', // 關閉airbnb對於必須添加prop-types的校驗
'react/destructuring-assignment': [
true,
'always',
{
ignoreClassFields: false,
},
],
'react/jsx-one-expression-per-line': 'off', // 關閉要求一個表達式必須換行的要求,和Prettier衝突了
'react/jsx-wrap-multilines': {
"prop": "ignore", // 關閉要求jsx屬性中寫jsx必需要加括號,和Prettier衝突了
},
'comma-dangle': [
'error',
{
arrays: 'always-multiline',
objects: 'always-multiline',
imports: 'always-multiline',
exports: 'always-multiline',
functions: 'only-multiline', // 關閉airbnb對函數調用參數,非一行,最後也要加逗號的限制
},
],
'jsx-a11y/no-static-element-interactions': 'off', // 關閉非交互元素加事件必須加 role
'jsx-a11y/click-events-have-key-events': 'off', // 關閉click事件要求有對應鍵盤事件
'no-bitwise': 'off', // 不讓用位操做符,不知道爲啥,先關掉
},
overrides: [
{
files: ['**/Mi/*.js', '**/Mi/*.jsx'],
rules: {
'react/prop-types': 'error', // Mi 文件夾下的是系統組件,必須寫prop-types
},
},
],
};
複製代碼
項目下建立 .prettierrc.json 文件,這個文件有兩個重要做用:express
注意:這個文件的改動常常不當即生效,重啓VSCode就生效了json
{
"trailingComma": "es5",
"singleQuote": true
}
複製代碼
由於上面提到的兩點,因此必須有所改動,譬如Prettier格式化,默認是沒有尾逗號的,可是airbnb會報錯,因此改一下trailingComma爲es5,表示在es5環境容許的狀況下就加逗號。bash
能夠happy coding了。。。 可是能夠繼續拓展,例如配置保存時候自動格式化,配置git提交時候自動格式化,配置git提交時候自動校驗等。app
eslint 提供了幾百?千?個規則,可是通常都是默認關閉的,這也是eslint做者的思想:我給你提供規則,可是我不表態好很差,你本身配。 因此extends裏就是各家制定的規則,後面的會覆蓋前面的。
"extends": [
"react-app", // react幫配置好了一些語法,譬如箭頭函數
"airbnb",
"plugin:prettier/recommended" // prettier配置
]
複製代碼
譬如我用了這三個規則,優先級就是prettier > airbnb > react-app,若是有一樣的配置,放在extends後面的規則會覆蓋前面的。
Prettier就是幫你配了一套格式化規則,提供極少數的可配置項,用就是了。反正目的是統一團隊風格,好很差我無論,原本就是個主觀問題。若是提供過多配置項,就會發展成爭論怎麼配置Prettier是個好配置?進入另外一個糾紛。
官方文檔 意思就是這個配置至關於同時配了
"extends": ["prettier"]
複製代碼
和
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "error"
}
複製代碼
官方文檔都有詳解,這裏講兩點: