成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ESLint簡單操作

liukai90 / 445人閱讀

摘要:簡介是由編寫的一個(gè)可擴(kuò)展每條規(guī)則獨(dú)立不內(nèi)置編碼風(fēng)格為理念的工具。在團(tuán)隊(duì)協(xié)作中,為避免低級(jí)產(chǎn)出風(fēng)格統(tǒng)一的代碼,會(huì)預(yù)先制定編碼規(guī)范。使用工具和代碼風(fēng)格檢測工具,則可以輔助編碼規(guī)范執(zhí)行,有效控制代碼質(zhì)量。

簡介

ESLint 是由 Nicholas C. Zakas 編寫的一個(gè)可擴(kuò)展、每條規(guī)則獨(dú)立、不內(nèi)置編碼風(fēng)格為理念的 Lint 工具。

在團(tuán)隊(duì)協(xié)作中,為避免低級(jí) Bug、產(chǎn)出風(fēng)格統(tǒng)一的代碼,會(huì)預(yù)先制定編碼規(guī)范。使用 Lint 工具和代碼風(fēng)格檢測工具,則可以輔助編碼規(guī)范執(zhí)行,有效控制代碼質(zhì)量。

準(zhǔn)備

ESLint 詳細(xì)使用可參見官方文檔

這里主要使用的Airbnb JavaScript Style Guide;

JS版本為ECMAScript6(阮一峰老師的ECMAScript 6入門)

Node.jsNPM必須的喲

安裝

首先,安裝ESLint。

$ npm i -g eslint

然后,安裝Airbnb語法規(guī)則。

$ npm i -g eslint-config-airbnb

最后,在項(xiàng)目的根目錄下新建一個(gè).eslintrc文件,配置ESLint。

{
  "extends": "airbnb/base",
}

在安裝的時(shí)候得注意一點(diǎn),eslinteslint-config-airbnb要么都執(zhí)行全局安裝,要么都本地安裝,必須相同喲。

使用

配置完相關(guān)信息后,就可以切到項(xiàng)目目錄內(nèi)然后執(zhí)行檢測啦:

我們新建一個(gè)test.js進(jìn)行檢測

import "./libraries/helper";

let path_name = location.pathname;
if (/^/(home)?/?$/.test(path_name)) {
  let flexSlider = _id("flexSlider");
  if (flexSlider) {
    let flexControlNav = _id("flexControlNav").children;
    new Swipe(flexSlider, {
      autoRestart: true,
      callback: (index) => {
        Array.prototype.slice.call(flexControlNav).map((item) => {
          item.className = "";
        });
        flexControlNav[index].className = "active";
      }
    });
  }
}

執(zhí)行檢測

$ eslint test.js
test.js
   4:5   error  Identifier "path_name" is not in camel case                camelcase
   4:5   error  "path_name" is never reassigned, use "const" instead       prefer-const
   7:7   error  "flexSlider" is never reassigned, use "const" instead      prefer-const
   7:20  error  "_id" is not defined                                       no-undef
   9:9   error  "flexControlNav" is never reassigned, use "const" instead  prefer-const
   9:26  error  "_id" is not defined                                       no-undef
  10:5   error  Do not use "new" for side effects                          no-new
  10:9   error  "Swipe" is not defined                                     no-undef
  13:63  error  Expected to return a value in this function                array-callback-return
  14:11  error  Assignment to property of function parameter "item"        no-param-reassign
  17:8   error  Missing trailing comma                                     comma-dangle

? 11 problems (11 errors, 0 warnings)

檢測結(jié)果信息可以知道,出錯(cuò)的行號(hào),錯(cuò)誤類型,錯(cuò)誤描述以及違反的規(guī)則

針對上面的錯(cuò)誤信息,我們修改一下test.js文件:

import "./libraries/helper";

const pathName = location.pathname;
if (/^/(home)?/?$/.test(patName)) {
  const flexSlider = _id("flexSlider");
  if (flexSlider) {
    const flexControlNav = _id("flexControlNav").children;
    /* eslint-disable no-new */
    new Swipe(flexSlider, {
      autoRestart: true,
      callback: (index) => {
        /* eslint-disable */
        Array.prototype.slice.call(flexControlNav).map((item) => {
          item.className = "";
        });
        flexControlNav[index].className = "active";
        /* eslint-enable */
      },
    });
    /* eslint-enable no-new */
  }
}

修改說明:

/* eslint-disable no-new */
...
/* eslint-enable no-new */
使用 eslint-disable + 規(guī)則名 的作用是不檢測這條規(guī)則,注意要使用 eslint-enable 結(jié)束喲

/* eslint-disable */
...
/* eslint-enable */
直接 eslint-disable 的作用是完全禁用ESLint進(jìn)行檢測

好了,再次運(yùn)行ESLint進(jìn)行檢測:

$ eslint test.js
test.js
   6:22  error  "_id" is not defined    no-undef
   8:28  error  "_id" is not defined    no-undef
  10:9   error  "Swipe" is not defined  no-undef

? 3 problems (3 errors, 0 warnings)

結(jié)果顯示還有3處錯(cuò)誤,_idSwipe是我們定義的兩個(gè)全局變量,在另一個(gè)模塊中,所以我們還需要修改.eslintrc將這兩個(gè)變量加入到globals中:

.eslintrc
{
  "extends": "airbnb/base",
  "globals": {
    "_id": true,
    "Swipe": true,
  },
}

再次執(zhí)行檢測,OK啦,全部通過;

參考鏈接

ESLint 使用入門

ESLint 配置參數(shù)介紹

ESLint 官方文檔

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79243.html

相關(guān)文章

  • 更新版-梳理前端開發(fā)使用eslint和prettier來檢查和格式化代碼問題

    摘要:整個(gè)代碼檢查和格式化流程應(yīng)該規(guī)范為如下步驟使用并且嘗試自動(dòng)修復(fù)所有問題有提示,可以進(jìn)行修復(fù),按照配置文件來進(jìn)行修復(fù)。參考文檔如何花分鐘解決產(chǎn)生的各種錯(cuò)誤的記憶現(xiàn)場本文轉(zhuǎn)載自我的更新版梳理前端開發(fā)使用和來檢查和格式化代碼問題 更新版,之前的版本可以看這里:梳理前端開發(fā)使用eslint和prettier來檢查和格式化代碼問題 一、問題痛點(diǎn) 在團(tuán)隊(duì)的項(xiàng)目開發(fā)過程中,代碼維護(hù)所占的時(shí)間比重...

    GitChat 評(píng)論0 收藏0
  • 在Typescript項(xiàng)目中,如何優(yōu)雅的使用ESLint和Prettier

    摘要:對于項(xiàng)目的編碼規(guī)范而言,主要有兩種選擇和。此外由于性能問題,官方?jīng)Q定全面采用,甚至把倉庫作為測試平臺(tái),而的解析器也成為獨(dú)立項(xiàng)目,專注解決雙方兼容性問題。最近在我的項(xiàng)目的編碼規(guī)范中全量的用代替了針對其中遇到的問題做一個(gè)記錄。 ??對于Typescript項(xiàng)目的編碼規(guī)范而言,主要有兩種選擇ESLint和TSLint。ESLint不僅能規(guī)范js代碼,通過配置解析器,也能規(guī)范TS代碼。此外由...

    chemzqm 評(píng)論0 收藏0
  • 在Typescript項(xiàng)目中,如何優(yōu)雅的使用ESLint和Prettier

    摘要:對于項(xiàng)目的編碼規(guī)范而言,主要有兩種選擇和。此外由于性能問題,官方?jīng)Q定全面采用,甚至把倉庫作為測試平臺(tái),而的解析器也成為獨(dú)立項(xiàng)目,專注解決雙方兼容性問題。最近在我的項(xiàng)目的編碼規(guī)范中全量的用代替了針對其中遇到的問題做一個(gè)記錄。 ??對于Typescript項(xiàng)目的編碼規(guī)范而言,主要有兩種選擇ESLint和TSLint。ESLint不僅能規(guī)范js代碼,通過配置解析器,也能規(guī)范TS代碼。此外由...

    WilsonLiu95 評(píng)論0 收藏0
  • 在Typescript項(xiàng)目中,如何優(yōu)雅的使用ESLint和Prettier

    摘要:對于項(xiàng)目的編碼規(guī)范而言,主要有兩種選擇和。此外由于性能問題,官方?jīng)Q定全面采用,甚至把倉庫作為測試平臺(tái),而的解析器也成為獨(dú)立項(xiàng)目,專注解決雙方兼容性問題。最近在我的項(xiàng)目的編碼規(guī)范中全量的用代替了針對其中遇到的問題做一個(gè)記錄。 ??對于Typescript項(xiàng)目的編碼規(guī)范而言,主要有兩種選擇ESLint和TSLint。ESLint不僅能規(guī)范js代碼,通過配置解析器,也能規(guī)范TS代碼。此外由...

    琛h。 評(píng)論0 收藏0
  • 前端構(gòu)建之webpack

    摘要:前端構(gòu)建之之前寫了一個(gè)前端構(gòu)建之,同樣的目的寫一個(gè),內(nèi)容基本上和一樣,主要用來自己學(xué)習(xí)記錄。合并很方便的實(shí)現(xiàn)合并最后附上完整的源代碼。 前端構(gòu)建之webpack 之前寫了一個(gè)前端構(gòu)建之gulp,同樣的目的寫一個(gè)webpack, 內(nèi)容基本上和gulp一樣,主要用來自己學(xué)習(xí)記錄。 為什么需要前端構(gòu)建 不解釋 本文大致分為以下幾個(gè)內(nèi)容: 規(guī)范校驗(yàn)js代碼(jslint) js解釋器(b...

    MartinHan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<