js eslint從零使用

從官網(wǎng)抄些有用的話,介紹什么的建議右轉(zhuǎn)百度,熟悉npm者直接拉到中間


安裝

通過npm安裝npm install -g eslint,詳細(xì)右轉(zhuǎn)百度

入門常見bug:
1.沒用過nodejs,不知道npm中全局安裝和本地安裝有什么區(qū)別,導(dǎo)致一系列xxx找不到問題的,右轉(zhuǎn)百度解決,與eslint關(guān)系不大
2.eslint以命令行運(yùn)行。各種編輯器的eslint插件本質(zhì)只是調(diào)用命令行執(zhí)行eslint命令而已,eslint本體還是要在npm中安裝的
3.命令行--fix或者插件自動(dòng)修復(fù)無效?eslint基本只對各種空格、引號、分號有自動(dòng)修復(fù),其他的基本靠手動(dòng);或者沒有搞好--ext參數(shù)沒有檢查某些文件等等


了解一下就算的使用

1.配置文件
.eslintrc.js、.eslintrc.json.eslintrc.yml之類的,后綴名并不重要eslint都認(rèn),按照對應(yīng)格式寫就行。一個(gè)沒有的話自己想辦法搞個(gè)出來或右轉(zhuǎn)百度,下面以.eslintrc.js格式為例

2.三個(gè)相對有用的參數(shù)
(1)parser,語法分析器

ESLint 默認(rèn)使用Espree作為其解析器,你可以在配置文件中指定一個(gè)不同的解析器,只要該解析器符合下列要求:

  1. 它必須是本地安裝的一個(gè) npm 模塊。
  2. 它必須有兼容 Esprima 的接口(它必須輸出一個(gè) parse() 方法)
  3. 它必須產(chǎn)出兼容 Esprima 的 AST 和 token 對象。

會用就行。目的在于前端框架如vue文件這些,肯定不能用默認(rèn)parser的,默認(rèn)parser只認(rèn)識原生js相關(guān)文件。這個(gè)時(shí)候直接用第三方如parser: 'babel-eslint'。

(2)env

env: {
    browser: false,
    node: true,
    es6: true
  }

告訴eslint你在什么環(huán)境下js開發(fā)。實(shí)際上主要是判斷一些常規(guī)預(yù)定義的全局變量是否合法,如瀏覽器中windowlocation這些,然而由于node一般可兼容瀏覽器環(huán)境的js寫法,所以即使上面設(shè)置了browser: false,使用這些全局變量時(shí)仍不會被eslint報(bào)錯(cuò)。

(3)extends
指定當(dāng)前規(guī)則配置從哪里繼承。

有兩個(gè)來源:
規(guī)則包:eslint-config-xxx,基于已有規(guī)則,提供特定的代碼風(fēng)格檢查
插件包:eslint-plugin-xxx,可提供新的規(guī)則

命名使用規(guī)律:

extends 屬性值可以省略包名的前綴 eslint-config-。
extends 屬性值可以由以下組成(指插件包):
plugin:
包名 (可省略前綴eslint-plugin-)
/
配置名稱 (比如 recommended)

"extends": [
        "eslint:recommended",
        "standard",
        "plugin:vue/recommended"
    ],

數(shù)組形式,規(guī)則從左往右依次被覆蓋。
eslint:recommended屬于官方提供的最基本規(guī)則,命名不受上面約束,相對特殊。
standard即eslint-config-standard,注意npm install后才可用。
plugin:vue/recommended即eslint-plugin-vue下的recommended配置,同樣的還有base、essential、strongly-recommended等配置,可直接查看源碼或官網(wǎng)介紹。

注:一般而言直接去npm倉庫查找后,直接npm install按照上述邏輯即可使用,但是不排除例外。如eslint-plugin-vue,官方文檔指明需要額外的配置,即parser需要更改為vue-eslint-parser,若此時(shí)還想使用babel-eslint作自定義parser,則需要把它放到parserOptions.parser(非官方指定的屬性,屬于第三方自己的實(shí)現(xiàn)手段)。


關(guān)鍵使用

核心就是rules: {...},選擇啟用哪些規(guī)則。規(guī)則的中文文檔:Rules
例子:

    "rules": {
       "quotes": "error"
    }
關(guān)于規(guī)則的值:

"off" or 0 - 關(guān)閉規(guī)則
"warn" or 1 - 將規(guī)則視為一個(gè)警告(不會影響退出碼)
"error" or 2 - 將規(guī)則視為一個(gè)錯(cuò)誤 (退出碼為1)
數(shù)組形式:
"quotes": ["error", "double"],第一個(gè)值是錯(cuò)誤級別,后面的值是選項(xiàng)。注意選項(xiàng)有可能是一個(gè)對象選項(xiàng)而不一定是字符串,且具體可選項(xiàng)視乎規(guī)則而定,看文檔查詢即可

規(guī)則覆蓋:

我們手動(dòng)在rules定義的優(yōu)先級最高,覆蓋其他插件擴(kuò)展的設(shè)置。
配置定義在插件中的一個(gè)規(guī)則的時(shí)候,你必須使用插件名/規(guī)則ID的形式。如:

{
    "plugins": [
        "plugin1"
    ],
    "rules": {
        "eqeqeq": "off",
        "curly": "error",
        "quotes": ["error", "double"],
        "plugin1/rule1": "error"
    }
}
文件中例外地設(shè)置

可以在你的文件中使用以下格式的塊注釋來臨時(shí)禁止規(guī)則出現(xiàn)警告:

/* eslint-disable */
這里開始的代碼不被eslint檢查
/* eslint-enable */
這里開始的代碼被eslint檢查

你也可以對指定的規(guī)則啟用或禁用警告:

/* eslint-disable no-alert, no-console */
alert('foo');
console.log('bar');
/* eslint-enable no-alert, no-console */

插進(jìn)中的自定義規(guī)則同理,插件名/規(guī)則ID放入注釋中即可。

基本結(jié)束,下面是我的vscode和vue環(huán)節(jié)


vscode集成

其實(shí)就是裝個(gè)ESLint擴(kuò)展。


image.png

看圖,vscode打開"問題",所有eslint報(bào)錯(cuò)都在這。鼠標(biāo)移過去,能自動(dòng)修復(fù)的圖標(biāo)會變成燈泡(上面那個(gè)錯(cuò)誤也可修復(fù),只是鼠標(biāo)沒有移過去),右鍵選擇解決方案,自行看英文不翻譯了。

Strings must use singlequote. eslint(quotes) [10,15]分析:
1.Strings must use singlequote.是提示信息,看不懂就繼續(xù)
2.eslint(quotes),說明這是eslint報(bào)的問題,括號內(nèi)是eslint的提示信息,意思為quotes這條規(guī)則不符合。然后你可以文檔/百度查詢這條規(guī)則要求的格式、默認(rèn)值是什么,或者rules中直接關(guān)掉

  1. [10,15]這行錯(cuò)誤的代碼在10行15列

vue中使用eslint

使用第三方模板或者@vue-cli的常見問題:項(xiàng)目下有(新建)一個(gè).eslintrc.js配置文件,然后百度再粘貼,導(dǎo)致覆蓋默認(rèn)設(shè)置產(chǎn)生各種報(bào)錯(cuò),諸如:<template>的'<'報(bào)unexpected token、'const'報(bào)錯(cuò)、'import'動(dòng)態(tài)引入的函數(shù)報(bào)錯(cuò)等等。

使用cli新建的項(xiàng)目一般默認(rèn)配置好parser、extends這些參數(shù),只去覆蓋rules就行。如果你看懂了上面那個(gè)eslint-plugin-vue的使用說明,那么可以完全自己寫一遍,最簡單的常用結(jié)構(gòu)應(yīng)該是:

module.exports = {
  parser: 'vue-eslint-parser',
  parserOptions: {
    parser: 'babel-eslint'
  },
  extends: ['plugin:vue/essential'],
  rules: {}
}

注:eslint-plugin-vue與eslint-plugin-html存在沖突,具體請看文檔。babel-eslint直接作parser也可以,但是效果一般,且不太支持eslint-plugin-vue

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ESLint 配置 ESlint 被設(shè)計(jì)為完全可配置的,這意味著你可以關(guān)閉每一個(gè)規(guī)則而只運(yùn)行基本語法驗(yàn)證,或混合和...
    靜默虛空閱讀 41,855評論 3 14
  • EsLint入門學(xué)習(xí)整理 這兩天因?yàn)楣疽?,就對ESLint進(jìn)行了初步的了解,網(wǎng)上的內(nèi)容基本上都差不多,但是內(nèi)容...
    點(diǎn)柈閱讀 26,244評論 3 42
  • 什么是 ESLint ESLint(中文站點(diǎn))是一個(gè)開源的 JavaScript 代碼檢查工具,使用 Node.j...
    小肆逸閱讀 1,558評論 0 3
  • ESLint 配置 中文官網(wǎng) 簡介 ESLint 是在 ECMAScript/JavaScript 代碼中識別和報(bào)...
    zcynine閱讀 1,852評論 0 1
  • 今天來講講自我成長。 因?yàn)?017年經(jīng)歷了很多,加班、生病、爭執(zhí)、情感分離、欺騙、自我放縱......經(jīng)歷過怨恨、...
    六區(qū)少年閱讀 394評論 0 0

友情鏈接更多精彩內(nèi)容