webpack+vue項(xiàng)目中配置ESLint

使用ESLint對(duì)代碼書(shū)寫(xiě)進(jìn)行規(guī)范椎组,可以有效的提高代碼的質(zhì)量奋献,降低代碼出錯(cuò)的機(jī)率案训,因此有必要將ESLint引入到項(xiàng)目中店枣。

目前網(wǎng)上已經(jīng)存在標(biāo)準(zhǔn)的ESLint配置速警,該規(guī)范是目前業(yè)界比較推崇的代碼編寫(xiě)規(guī)范叹誉,以下是配置方法:

1. 安裝ESLint標(biāo)準(zhǔn)配置

npm install --D eslint-config-standard eslint-plugin-standard eslint-plugin-promise eslint-plugin-import eslint-plugin-node

其中:eslint-config-standard是依賴于后面的plugin

2. 編寫(xiě)配置文件

在項(xiàng)目根目錄下添加.eslintrc文件,該文件是一個(gè)JSON配置文件闷旧,需要在該配置文件中指定"extends"字段為"standard"桂对,指明繼承標(biāo)準(zhǔn)配置文件。
配置文件內(nèi)容如下:

{
  "extends": "standard"
}

此時(shí)在package.json中的scripts字段中配置"lint"命令鸠匀,如下

"lint": "eslint --ext .js --ext .vue src/"

調(diào)用本地的eslint命令,用--ext指明需要檢測(cè)js文件和vue文件逾柿,最后指定檢測(cè)的文件所在目錄為src/缀棍。
注意:在package.json中scripts字段中調(diào)用eslint命令使用項(xiàng)目中的eslint命令,如果想要在全局中調(diào)用eslint命令机错,需要全局安裝爬范。
調(diào)用后結(jié)果如下:

運(yùn)行結(jié)果

為什么會(huì)出錯(cuò)呢?
此時(shí)報(bào)錯(cuò)的都是vue文件弱匪,由于vue文件的書(shū)寫(xiě)格式特殊青瀑,所以需要配置后才能正確處理。

3. 配置Vue ESLint

Vue文件各個(gè)部分是由標(biāo)簽包裹的萧诫,因此編寫(xiě)規(guī)范同html一致斥难。此時(shí),需要下載eslint-plugin-html插件帘饶,并且在eslint的配置文件中指明使用插件哑诊。
插件下載命令

npm install -D eslint-plugin-html

此時(shí)配置文件修改為:

{
  "extends": "standard",
  "plugins": [
    "html"
  ]
}

此時(shí)在運(yùn)行,便沒(méi)有問(wèn)題(前提條件是代碼書(shū)寫(xiě)確實(shí)符合規(guī)范)


運(yùn)行結(jié)果

4. 在webpack中配置ESLint

我們想要達(dá)到的目的是及刻,在我們的代碼編寫(xiě)過(guò)程中镀裤,webpack可以實(shí)時(shí)對(duì)代碼進(jìn)行檢測(cè),并給出提示缴饭。
在webpack+vue的項(xiàng)目中暑劝,我們編寫(xiě)的代碼都需要通過(guò)babel編譯,編譯后的代碼并不能滿足eslint的規(guī)范颗搂,因此担猛,我們需要對(duì)編譯前的文件進(jìn)行檢查。這時(shí)丢氢,我們需要使用babel-eslint編譯器對(duì)文件進(jìn)行檢查(否則無(wú)法識(shí)別新特性或者特殊文件的編寫(xiě)格式毁习,如vue)。
安裝指令如下

npm install babel-eslint -D

修改.eslintrc如下

{
  "extends": "standard",
  "plugins": [
    "html"
  ],
  "parser": "babel-eslint"
}

指明解析器為babel-eslint

在webpack中卖丸,提供了eslint-loader支持對(duì)特定文件進(jìn)行代碼格式檢查纺且,因此,首先我們需要下載eslint-loader稍浆,然后在webpack配置文件中配置規(guī)則载碌。

{
  "extends": "standard",
  "plugins": [
    "html"
  ],
  "parser": "babel-eslint"
}
npm install eslint-loader -D

webpack中module.rules中新增一項(xiàng)規(guī)則

{
        test: /\.(vue|js)$/,
        loader: 'eslint-loader',
        exclude: /node_modules/,
        // 預(yù)處理
        enforce: 'pre'
}

這里指明了對(duì)js和vue文件使用eslint-loader進(jìn)行處理猜嘱,并排除了/node_modules/目錄中的文件,并利用enforce字段指明嫁艇,該loader是進(jìn)行預(yù)處理的loader朗伶,先對(duì)指定文件進(jìn)行eslint后才會(huì)執(zhí)行babel編譯。

以上便可完成了所有配置步咪。


代碼提交之前對(duì)代碼進(jìn)行檢查

我們?cè)趃ithub托管代碼時(shí)论皆,會(huì)將自己的代碼提交到github倉(cāng)庫(kù)中,如果我們可以在每一次提交之前對(duì)我們的代碼進(jìn)行檢查猾漫,確定無(wú)誤后才正確提交点晴,這樣的話,就能保證線上的代碼也是合乎規(guī)范的悯周,這樣有利于代碼的維護(hù)粒督。

如何實(shí)現(xiàn)以上功能呢?

這里我們需要借助husky工具禽翼,安裝完該工具之后屠橄,該工具可以在我們提交代碼時(shí),調(diào)用"precommit"鉤子闰挡,執(zhí)行預(yù)處理操作锐墙。

首先安裝該工具

npm install -D husky

然后在package.json的scripts字段中配置precommit,讓其執(zhí)行代碼檢測(cè)操作

 "precommit": "eslint --ext .js --ext .vue src/"

此時(shí)提交的代碼存在問(wèn)題长酗,就會(huì)報(bào)錯(cuò)贮匕,提交失敗。


統(tǒng)一編輯器設(shè)置

目前網(wǎng)上存在很多編輯器花枫,其自定義配置也是各不相同刻盐,如何統(tǒng)一編輯器的設(shè)置呢?

所有的編輯器都提供了editorconfig的插件劳翰,它會(huì)讀取項(xiàng)目根目錄下的.editorconfig文件敦锌,然后進(jìn)行配置,因此我們可以通過(guò).editorconfig文件來(lái)編寫(xiě)編輯器的配置方案佳簸。

# 標(biāo)識(shí)為最終配置
root = true

# 所有文件配置
[*]
# 字符集
charset = utf-8
# 行結(jié)束符號(hào)
end_of_line = lf
# 縮緊
indent_size = 2
# 縮緊方式
indent_style = space
# 最后插入一行
insert_final_newline = true
# 刪除最后的空格
trim_trailing_whitespace = true
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乙墙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子生均,更是在濱河造成了極大的恐慌听想,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件马胧,死亡現(xiàn)場(chǎng)離奇詭異汉买,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)佩脊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)蛙粘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)垫卤,“玉大人,你說(shuō)我怎么就攤上這事出牧⊙ㄖ猓” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵舔痕,是天一觀的道長(zhǎng)评抚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)伯复,這世上最難降的妖魔是什么慨代? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮边翼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸣剪。我一直安慰自己组底,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布筐骇。 她就那樣靜靜地躺著债鸡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铛纬。 梳的紋絲不亂的頭發(fā)上厌均,一...
    開(kāi)封第一講書(shū)人閱讀 49,729評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音告唆,去河邊找鬼棺弊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛擒悬,可吹牛的內(nèi)容都是我干的模她。 我是一名探鬼主播,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼懂牧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼侈净!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起僧凤,我...
    開(kāi)封第一講書(shū)人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤畜侦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后躯保,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體旋膳,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年途事,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溺忧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咏连。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鲁森,靈堂內(nèi)的尸體忽然破棺而出祟滴,到底是詐尸還是另有隱情,我是刑警寧澤歌溉,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布垄懂,位于F島的核電站,受9級(jí)特大地震影響痛垛,放射性物質(zhì)發(fā)生泄漏草慧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一匙头、第九天 我趴在偏房一處隱蔽的房頂上張望漫谷。 院中可真熱鬧,春花似錦蹂析、人聲如沸舔示。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惕稻。三九已至,卻和暖如春蝙叛,著一層夾襖步出監(jiān)牢的瞬間俺祠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工借帘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜘渣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓肺然,卻偏偏與公主長(zhǎng)得像宋梧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狰挡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

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

  • 1 Webpack 1.1 概念簡(jiǎn)介 1.1.1 WebPack是什么 1捂龄、一個(gè)打包工具 2、一個(gè)模塊加載工具 3...
    Kevin_Junbaozi閱讀 6,642評(píng)論 0 16
  • 寫(xiě)在開(kāi)頭 先說(shuō)說(shuō)為什么要寫(xiě)這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,276評(píng)論 4 31
  • 一加叁、webpack的基本概念 webpack 本質(zhì)上是一個(gè)打包工具倦沧,它會(huì)根據(jù)代碼的內(nèi)容解析模塊依賴,幫助我們把多個(gè)...
    cilla123閱讀 1,536評(píng)論 0 8
  • 作者:小 boy (滬江前端開(kāi)發(fā)工程師)本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明作者及出處豫柬。原文地址:https://www.smas...
    iKcamp閱讀 2,742評(píng)論 0 18
  • 最近在逛各大網(wǎng)站告希,論壇扑浸,以及像SegmentFault等編程問(wèn)答社區(qū),發(fā)現(xiàn)Vue.js異逞嗯迹火爆喝噪,重復(fù)性的提問(wèn)和內(nèi)容...
    忘川慕白閱讀 5,915評(píng)論 7 113