ESLint 是在 ECMAScript/JavaScript 代碼中識別和報告模式匹配的工具,它的目標是保證代碼的一致性
和避免錯誤。說白了就是大家小組長想讓大家按照他寫代碼的風格去寫代碼(徹底插件話的配置插件和規則),指不定這規則仍是從哪一個大團隊伸手黨拿來的(各類比較規範化的一些規則配置)html
parserOptions:解析的配置,列舉經常使用配置vue
globals: 全局變量,源文件中訪問未定義變量會no-undef,定義一些全局變量就可使用globalsnode
console.log(globalVarible); // 'globalVarible' is not defined no-undef // globals: { // globalVarible: false; // } // will make it right
rules: 規則,這裏就是經常使用的設置一些項目中使用的規則,規則設置能夠是eslint默認的一些rules也能夠是插件中一些rules,好比vue/*,0->off關閉規則 1->warn報出警告 2->error報出錯誤級別,若是一些規則有其餘選項,能夠經過數組字面量形式配置react
{ "rules": { "eqeqeq": "off", "curly": "error", "quotes": ["error", "double"] // 代碼中使用雙引號,級別爲錯誤 } }
extends: 繼承的概念,從前一個配置中繼承規則,同時也能夠去修改繼承到的規則,修改分爲兩類,只修改錯誤級別或者總體覆蓋規則,好比可使用eslint:recommended來開啓eslint的核心規則,這些規則能夠在下面的連接中找到eslint:recommended規則,固然也能夠繼承一些第三方已有的配置,好比eslint-plugin-vuewebpack
module.exports = { extends: [ // add more generic rulesets here, such as: // 'eslint:recommended', 'plugin:vue/recommended' ], rules: { // override/add rules settings here, such as: // 'vue/no-unused-vars': 'error' } }
以上的配置基本能夠知足平常開發的須要了,inline Comments能夠在源碼文件中幫助咱們控制Eslint,好比忽略某行驗證,在源碼文件中添加全局變量等等git
// 用來禁止eslint檢測的代碼塊 /* eslint-disable */ alert('foo'); /* eslint-enable */ // 下面這行禁止規則no-alert alert('foo'); // eslint-disable-line no-alert // 該文件添加一些全局變量 /* global var1, var2 */ // 不少相似的inline comment去控制eslint的行爲,可去官網查閱
簡單描述一個項目的需求來進行配置es6
// 使用VueCli3.0生成項目架構的時候,eslintrc.js的配置以下 module.exports = { root: true, // 項目級別的eslint配置 env: { node: true // node的環境,在源碼中方爲process的時候不會報錯 }, 'extends': [ 'plugin:vue/essential', // Vue項目,繼承了eslint-plugin-vue的rule,文章結尾會給出官網連接 'eslint:recommended' // 這個是eslint官方推薦的配置,在eslint rules頁面打鉤的都是recommended ], // 針對項目需求和團隊制定本身的rules rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' }, parserOptions: { parser: 'babel-eslint' } }
VueCli3.0官方給的配置其實就夠用了,本身配置一些自定義的rules,接下來講幾個業務場景,而後去對eslint配置進行修改github
在源碼中使用document等變量的時候須要web
module.exports = { env: { browser: true, // window、document 瀏覽器全局變量的使用 } }
在Vue初始化的時候給了一個vm = new Vue({})的引用,這個會在全局中使用typescript
module.exports = { globals: { vm: false, // 在源碼中使用vm就不會報錯了,同時false還禁止對vm進行修改 DDLogin: false, // 釘釘登錄的全局變量 } }
修改VueCli3.0默認繼承的規則,不適用eslint:recommended 使用airbnb-base config(不包含React部分)
# use npm5+ 這裏airbnb-base 依賴eslint和eslint-plugin-import(關於import的一些驗證) npx install-peerdeps --dev eslint-config-airbnb-base
module.exports = { 'extend': [ 'plugin:vue/recommended', 'airbnb-base' ], }
根據團隊制定規則
module.exports = { rules: { 'vue/no-v-html': 'off', // 這裏針對繼承來的配置去進行自定義配置 } }
給出如下經常使用的eslint-plugin-(能夠加強eslint的功能,同時提供一些規則) 和 eslint-config-(可分享的配置,只是組合規則導出一個配置對象)
總結:代碼規範這些東西沒有標準,咱們能夠徹底自定義本身的規則,也能夠去使用一些現成的規則,設置能夠書寫本身的規則,做爲團隊來說,代碼風格統一仍是有必要的,本篇只是簡單的記錄一下eslint基本使用,剩下須要讀者本身去結合本身的項目使用一些規則和開發一些插件知足需求