認(rèn)識Eslint以及項(xiàng)目常見的.eslintrc.js配置

什么是eslintrc

ESLint旨在完全可配置阁猜,這意味著你可以關(guān)閉每個規(guī)則并僅使用基本語法驗(yàn)證運(yùn)行颗味,或混合并匹配捆綁規(guī)則和自定義規(guī)則脖律,以使ESLint完美適合您的項(xiàng)目。配置ESLint有兩種主要方法:

配置注釋 - 使用JavaScript注釋將配置信息直接嵌入到文件中蟀俊。
配置文件 - 使用JavaScript钦铺,JSON或YAML文件指定整個目錄(主目錄除外)及其所有子目錄的配置信息。


配置文件格式

ESLint支持多種格式的配置文件:
JavaScript - 使用.eslintrc.js和導(dǎo)出包含您的配置的對象肢预。
YAML - 使用.eslintrc.yaml或.eslintrc.yml定義配置結(jié)構(gòu)矛洞。
JSON - 用于.eslintrc.json定義配置結(jié)構(gòu)。ESLint的JSON文件也允許JavaScript樣式的注釋烫映。
不推薦使用 - 使用.eslintrc沼本,可以是JSON或YAML。
package.json - eslintConfig在您的package.json文件中創(chuàng)建一個屬性并在那里定義您的配置锭沟。

如果同一目錄中有多個配置文件抽兆,則ESLint將只使用一個。優(yōu)先順序是:
1.eslintrc.js
2.eslintrc.yaml
3.eslintrc.yml
4.eslintrc.json
5.eslintrc
6.package.json


配置級聯(lián)和層次結(jié)構(gòu)

假設(shè)您具有以下結(jié)構(gòu):

your-project
├── .eslintrc
├── lib
│ └── source.js
└─┬ tests
  ├── .eslintrc
  └── test.js

配置級聯(lián)的工作方式是使用最接近.eslintrc文件的文件作為最高優(yōu)先級族淮,然后使用父目錄中的任何配置文件辫红,依此類推凭涂。
1??lib/所有文件,將使用.eslintrc項(xiàng)目根目錄中的文件作為其配置
2??tests/目錄厉熟,.eslintrc其目錄層次結(jié)構(gòu)中的兩個文件的組合來繪制导盅,其中最接近的文件具有優(yōu)先權(quán)。
通過這種方式揍瑟,您可以擁有項(xiàng)目級ESLint設(shè)置白翻,并且還具有特定于目錄的覆蓋。

假設(shè)您具有以下結(jié)構(gòu):

your-project
├── package.json
├── lib
│ └── source.js
└─┬ tests
  ├── .eslintrc
  └── test.js

如果在同一目錄中找到了一個.eslintrc和一個package.json文件绢片,.eslintrc將優(yōu)先使用滤馍,并且package.json不會使用該文件。

假設(shè)您具有以下結(jié)構(gòu):

home
└── user
    ├── .eslintrc <- Always skipped if other configs present
    └── projectA
        ├── .eslintrc  <- Not used
        └── lib
            ├── .eslintrc  <- { "root": true }
            └── main.js

默認(rèn)情況下底循,ESLint將在根目錄下的所有父文件夾中查找配置文件巢株。
要將ESLint限制為特定項(xiàng)目,請將其"root": true放在文件eslintConfig字段內(nèi)package.json或.eslintrc.*項(xiàng)目根級別的文件中熙涤。一旦找到配置阁苞,ESLint將停止查找父文件夾"root": true。


項(xiàng)目中常用的配置

下面這些rules是用來設(shè)置從插件來的規(guī)范代碼的規(guī)則祠挫,使用必須去掉前綴eslint-plugin-主要有如下的設(shè)置規(guī)則那槽,可以設(shè)置字符串也可以設(shè)置數(shù)字,兩者效果一致
"off" -> 0 關(guān)閉規(guī)則
"warn" -> 1 開啟警告規(guī)則
"error" -> 2 開啟錯誤規(guī)則

// http://eslint.org/docs/user-guide/configuring

module.exports = {
  //此項(xiàng)是用來告訴eslint找當(dāng)前配置文件不能往父級查找
  root: true,

 //此項(xiàng)是用來指定eslint解析器的等舔,解析器必須符合規(guī)則骚灸,babel-eslint解析器是對babel解析器的包裝使其與ESLint解析
  parser: 'babel-eslint',

 //此項(xiàng)是用來指定javaScript語言類型和風(fēng)格,sourceType用來指定js導(dǎo)入的方式慌植,默認(rèn)是script甚牲,此處設(shè)置為module,指某塊導(dǎo)入方式
  parserOptions: {

// 設(shè)置 script(默認(rèn)) 或 module蝶柿,如果代碼是在ECMASCRIPT中的模塊
    sourceType: 'module'丈钙,
    "ecmaVersion": 6,
  },

// 此項(xiàng)指定環(huán)境的全局變量,下面的配置指定為瀏覽器環(huán)境
  env: {
    browser: true,
  },

// 此項(xiàng)是用來配置標(biāo)準(zhǔn)的js風(fēng)格交汤,就是說寫代碼的時候要規(guī)范的寫著恩,如果你使用vs-code我覺得應(yīng)該可以避免出錯
  extends: 'airbnb-base',

// 此項(xiàng)是用來提供插件的,插件名稱省略了eslint-plugin-蜻展,下面這個配置是用來規(guī)范html的
  // required to lint *.vue files
  plugins: [
    'html'
  ],

  // check if imports actually resolve
  'settings': {
    'import/resolver': {
      'webpack': {
        'config': 'build/webpack.base.conf.js'
      }
    }
  },

  // add your custom rules here
  'rules': {
    // don't require .vue extension when importing
    'import/extensions': ['error', 'always', {  // 對文件擴(kuò)展名的驗(yàn)證
      'js': 'never',
      'vue': 'never'
    }],
    // allow optionalDependencies
    'import/no-extraneous-dependencies': ['error', {
      'optionalDependencies': ['test/unit/index.js']
    }],
    'no-unused-expressions': ["error", {   // 禁止無用的表達(dá)式
      "allowTernary": true,
      "allowShortCircuit": true
    }],
    'no-bitwise': ["error", {   //不允許使用位運(yùn)算符
      "allow": ["~"]
    }],
    'import/prefer-default-export': 0,// 關(guān)閉-使用default export
    'import/newline-after-import': 0, // 關(guān)閉-在import中新起一行
    'no-param-reassign': 0,  //關(guān)閉-不允許重新分配函數(shù)參數(shù)"no-proto
    'no-plusplus': 0,  //關(guān)閉-不允許使用++ --運(yùn)算符
    'linebreak-style': 0,
    'max-len': 0,  //關(guān)閉-一行最大長度,單位為字符
    'no-nested-ternary': 0,  //關(guān)閉-不允許使用嵌套的三目運(yùn)算符
    'camelcase': 0,  // 不強(qiáng)制駝峰命名規(guī)則
    // allow debugger & console during development
    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
    'no-console': process.env.NODE_ENV === 'production' ? 2 : 0
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末邀摆,一起剝皮案震驚了整個濱河市纵顾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栋盹,老刑警劉巖施逾,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡汉额,警方通過查閱死者的電腦和手機(jī)曹仗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蠕搜,“玉大人怎茫,你說我怎么就攤上這事〖斯啵” “怎么了轨蛤?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長虫埂。 經(jīng)常有香客問我祥山,道長,這世上最難降的妖魔是什么掉伏? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任缝呕,我火速辦了婚禮,結(jié)果婚禮上斧散,老公的妹妹穿的比我還像新娘供常。我一直安慰自己,他們只是感情好颅湘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布话侧。 她就那樣靜靜地躺著,像睡著了一般闯参。 火紅的嫁衣襯著肌膚如雪瞻鹏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天鹿寨,我揣著相機(jī)與錄音新博,去河邊找鬼。 笑死脚草,一個胖子當(dāng)著我的面吹牛赫悄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播馏慨,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼埂淮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了写隶?” 一聲冷哼從身側(cè)響起倔撞,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慕趴,沒想到半個月后痪蝇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鄙陡,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年躏啰,在試婚紗的時候發(fā)現(xiàn)自己被綠了趁矾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡给僵,死狀恐怖毫捣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情想际,我是刑警寧澤培漏,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站胡本,受9級特大地震影響牌柄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侧甫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一珊佣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧披粟,春花似錦咒锻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拇泛,卻和暖如春滨巴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背俺叭。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工恭取, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人熄守。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓蜈垮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親裕照。 傳聞我的和親對象是個殘疾皇子攒发,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • ESLint 配置 ESlint 被設(shè)計(jì)為完全可配置的,這意味著你可以關(guān)閉每一個規(guī)則而只運(yùn)行基本語法驗(yàn)證晋南,或混合和...
    靜默虛空閱讀 41,307評論 3 14
  • 一晨继、JSLint JSHint ESLint 參考前端工具考 - ESLint 篇JS Linter 進(jìn)化史 C ...
    合肥黑閱讀 76,658評論 0 47
  • ESlint 被設(shè)計(jì)為完全可配置的,這意味著你可以關(guān)閉每一個規(guī)則而只運(yùn)行基本語法驗(yàn)證搬俊,或混合和匹配 ESLint ...
    Maco_wang閱讀 820評論 0 1
  • EsLint入門學(xué)習(xí)整理 這兩天因?yàn)楣疽笪裳铮蛯SLint進(jìn)行了初步的了解,網(wǎng)上的內(nèi)容基本上都差不多唉擂,但是內(nèi)容...
    點(diǎn)柈閱讀 26,027評論 3 42
  • 01 “我們單位好幾個90后小伙子都禿頂了玩祟「顾酰” “還有個小伙子不但禿頂,而且還得了前列腺炎空扎〔厝担” “以前基本上不要女...
    我是姜燕妮閱讀 14,763評論 61 156