ionic2/3實(shí)戰(zhàn)-使用tslint

傳送門
TSLlint型奥,tslint-eslint-rules务蝠,tslint-config-alloy诅需,eslint-config-alloy信殊,ionic2_tabs

前言

  • 在ionic2項(xiàng)目根目錄下有一個tslint.json文件,這個文件是做什么用的,怎么用.本文就此講解一下
  • 由于JavaScript語言的靈活性伞广,每個程序員代碼風(fēng)格千差萬別,為了統(tǒng)一代碼風(fēng)格于是就有人出了一些腳本工具拣帽,這些工具不僅能對代碼風(fēng)格進(jìn)行統(tǒng)一而且還能對JavaScript代碼中的一些陷阱給予提示
  • JavaScript校驗(yàn)工具有很多疼电,目前最流行的是ESLint,但是ionic項(xiàng)目使用的是TypeScript和JavaScript有點(diǎn)差異减拭,于是有人模仿ESLint開發(fā)了TSLint用于校驗(yàn)TypeScript代碼

先感受一下校驗(yàn)效果

  • 如下圖1定義了規(guī)則禁止使用 var聲明變量蔽豺,則在圖2webstrom中可以看到,用var聲明變量會有錯誤提示
    圖1

    圖2

關(guān)于TSLint

  1. TSLint提供一些廣泛支持的核心校驗(yàn)規(guī)則
  2. 預(yù)留了自定義規(guī)則的接口
  3. 可以輸出驗(yàn)證失敗的規(guī)則清單
  4. 可以自動修復(fù)部分驗(yàn)證規(guī)則
  5. 提供了各種開發(fā)工具插件與其相集成
  • TSLint已經(jīng)提供了一些核心規(guī)則,但是還不夠拧粪,于是有人用TSLint提供的自定義接口又自定義了許多規(guī)則修陡。如:
  1. tslint-eslint-rules——ionic項(xiàng)目默認(rèn)使用這個
  2. codelyzer——angular項(xiàng)目默認(rèn)使用這個
  3. 還有好多如下圖
  • 現(xiàn)在有了大量校驗(yàn)規(guī)則,如何使用既们,也就是如何配置又是麻煩事了濒析,起碼需要理解每個規(guī)則的含義才能配置吧,并且都是英文啊啥纸,理解難度大。這個問題顯而易見婴氮,所以有人已經(jīng)幫我們配置好了斯棒。這就是tslint-config-alloy,這里面的所有配置都有中文注釋主经,它的配置原則:
  1. 能夠幫助發(fā)現(xiàn)代碼錯誤的規(guī)則荣暮,全部開啟
  2. 配置不應(yīng)該依賴于某個具體項(xiàng)目,而應(yīng)盡可能的合理
  3. 幫助保持團(tuán)隊(duì)的代碼風(fēng)格統(tǒng)一罩驻,而不是限制開發(fā)體驗(yàn)
  • 如果覺得tslint-config-alloy提供的配置不合理穗酥,我們就可以在本文最開始提到的tslint.json文件(ionic項(xiàng)目根目錄下)中覆蓋它的配置

掃盲:前面說tslint提供了大量規(guī)則,其實(shí)是說的是規(guī)則的實(shí)現(xiàn),我們需要配置,但是還有人不知道什么是規(guī)則,什么是配置;如:不允許使用var的規(guī)則的實(shí)現(xiàn)看這里,它的配置需要在tslint.json文件中配置'no-var-keyword': true惠遏,設(shè)置false則不校驗(yàn),這就是配置

項(xiàng)目實(shí)戰(zhàn)

  • 環(huán)境依賴node v7+或者yarn v1.0+

  • 項(xiàng)目安裝依賴:cnpm install --save-dev tslint-eslint-rules tslint-config-alloy

其中tslint-eslint-rules是規(guī)則的實(shí)現(xiàn)砾跃,它的規(guī)則已經(jīng)繼承了tslint,其中tslint-config-alloy是規(guī)則的配置节吮,我們的配置繼承這里的配置抽高。

  • ionic項(xiàng)目默認(rèn)已經(jīng)安裝了tslint,最好在node_modules目錄中檢查一下,未安裝則安裝:cnpm install --save-dev tslint
    檢查項(xiàng)目是否安裝tslint
  • 配置tslint.json內(nèi)容如下
{
  "extends": "tslint-config-alloy",
  "rules": {
  },
  "rulesDirectory": [
    "node_modules/tslint-eslint-rules/dist/rules"
  ]
}

其中rulesDirectory指定規(guī)則的實(shí)現(xiàn)目錄,可以配置多個透绩,如你自定義的規(guī)則的目錄翘骂;其中extends指定我們繼承的配置,這里繼承tslint-config-alloy帚豪,我們可以在rules中添加配置和覆蓋tslint-config-alloy提供的配置碳竟。更多詳情看這里

  • webstorm啟用tslint,其他ide參考這里


  • 找個ts文件測試一下吧

如果你的項(xiàng)目是一個老項(xiàng)目狸臣,啟用了TSLint會有大量錯誤

  • 使用自動修復(fù)命令tslint --fix -c ./tslint.json 'src/**/*.ts'莹桅,如下圖,其中Fixed是自動修復(fù)的文件固棚,ERROR是不能自動修復(fù)只能手動修復(fù)的文件统翩,Warning是校驗(yàn)規(guī)則實(shí)現(xiàn)不全仙蚜,未來更新依賴可能會修復(fù)

  • 請認(rèn)真閱讀tslint-config-alloy內(nèi)容,關(guān)閉或重寫一些太嚴(yán)格的規(guī)則厂汗,如代碼中允許出現(xiàn)debugger委粉,可以參考我的項(xiàng)目

  • 手動修復(fù)代碼

  • 有些代碼風(fēng)格規(guī)則和ide默認(rèn)的格式化代碼風(fēng)格存在沖突,這時候要么在tslint.json重新定義規(guī)則娶桦,要么修改ide配置贾节,如:

  1. webstorm設(shè)置import自動導(dǎo)入的內(nèi)容為單引號

  2. webstorm設(shè)置import自動導(dǎo)入大括號兩邊添加空格
    默認(rèn)自動生成格式:
    import {AbstractControl} from '@angular/forms';
    想要格式:
    import { AbstractControl } from '@angular/forms';
  3. 其他配置自行百度
  4. 實(shí)際開發(fā)過程中可以先不啟用TSLint,每次提交代碼前或測試開發(fā)的代碼時在啟用并修復(fù)問題

TSLint注釋標(biāo)記

  • ts文件中使用以下注釋來臨時忽略規(guī)則出現(xiàn)的錯誤衷畦,參考這里
    /* tslint:disable */——忽略該行以下所有代碼出現(xiàn)的錯誤提示
    /* tslint:enable */——當(dāng)前ts文件重新啟用tslint

// tslint:disable-line——忽略當(dāng)前行代碼出現(xiàn)的錯誤提示

// tslint:disable-next-line——忽略下一行代碼出現(xiàn)的錯誤提示

關(guān)于自定義規(guī)則

  • 參考
  1. https://palantir.github.io/tslint/develop/custom-rules/
  2. https://blog.fedepot.com/bian-xie-zi-ding-yi-tslint-rules/
  3. https://webfe.kujiale.com/tslint-bp/
  • TSLint提供了一個comment-format(單行注釋格式化規(guī)則),如下
 "rules": {
    "comment-format": [true, "check-space"]
  }
  • 當(dāng)注釋描述不以空格開頭則報(bào)錯栗涂,如下圖,但是這個規(guī)則沒有實(shí)現(xiàn)自動修復(fù)功能祈争,所以我這里實(shí)現(xiàn)


  • 實(shí)現(xiàn)自定義規(guī)則斤程,單行注釋不以空格開頭則自動添加空格,代碼如下圖菩混,源碼在這里

  • 使用配置

  • 效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末忿墅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沮峡,更是在濱河造成了極大的恐慌疚脐,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邢疙,死亡現(xiàn)場離奇詭異棍弄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)疟游,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門呼畸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乡摹,你說我怎么就攤上這事役耕。” “怎么了聪廉?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵瞬痘,是天一觀的道長。 經(jīng)常有香客問我板熊,道長框全,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任干签,我火速辦了婚禮津辩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己喘沿,他們只是感情好闸度,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚜印,像睡著了一般莺禁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窄赋,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天哟冬,我揣著相機(jī)與錄音,去河邊找鬼忆绰。 笑死浩峡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的错敢。 我是一名探鬼主播翰灾,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼伐债!你這毒婦竟也來了预侯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤峰锁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后双戳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虹蒋,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年飒货,在試婚紗的時候發(fā)現(xiàn)自己被綠了魄衅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡塘辅,死狀恐怖晃虫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扣墩,我是刑警寧澤哲银,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站呻惕,受9級特大地震影響荆责,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜亚脆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一做院、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦键耕、人聲如沸寺滚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽村视。三九已至,卻和暖如春棚亩,著一層夾襖步出監(jiān)牢的瞬間蓖议,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工讥蟆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勒虾,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓瘸彤,卻偏偏與公主長得像修然,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子质况,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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

  • 兩個月之前在項(xiàng)目中就開始使用 Eslint 愕宋,當(dāng)時直接 copy 別人的 .eslintrc.js 文件,感覺好復(fù)...
    dkvirus閱讀 111,910評論 33 190
  • ESLint 配置 ESlint 被設(shè)計(jì)為完全可配置的结榄,這意味著你可以關(guān)閉每一個規(guī)則而只運(yùn)行基本語法驗(yàn)證中贝,或混合和...
    靜默虛空閱讀 41,249評論 3 14
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)臼朗,斷路器邻寿,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • EsLint入門學(xué)習(xí)整理 這兩天因?yàn)楣疽螅蛯SLint進(jìn)行了初步的了解视哑,網(wǎng)上的內(nèi)容基本上都差不多绣否,但是內(nèi)容...
    點(diǎn)柈閱讀 26,009評論 3 42
  • 最近在項(xiàng)目部署了ESlint還有一些配套的工具蒜撮,比如 prettier husky lint-staged,有些心...
    不是魷魚閱讀 27,858評論 1 34