在webpack中使用stylelint(三)配置項

stylelint

前言


本文詳細介紹stylelint每一個配置項哼御,偏重概念方面的講解吩案,可以粗略的看一遍留下一個大致的映像秀又,需要動手的地方并不多涮帘。

廢話不多說拼苍,一起來看看吧~

配置項加載規(guī)則


前面我們已經(jīng)介紹過配置項的加載規(guī)則,這里再重申一下:

  • 調用stylelint.lint的時候我們可以通過參數(shù)指定:config调缨,configFile等疮鲫。
  • package.json中的stylelint屬性中指定。
  • .stylelintrc文件中指定弦叶,文件格式可以是JSON或者YAML俊犯。也可以給該文件加后綴,像這樣:.stylelintrc.json, .stylelintrc.yaml, .stylelintrc.yml,
    .stylelintrc.js 伤哺。
  • stylelint.config.js文件中指定燕侠,該文件exports一個配置對象。

按順序查找立莉,任何一項有值绢彤,就會結束查找。

配置項


rules

rules是一個對象蜓耻,屬性名為規(guī)則名稱茫舶,屬性值為規(guī)則取值,它告訴stylelint該檢查什么刹淌,該怎么報錯饶氏。所有規(guī)則默認都是關閉的。

所有stylelint的規(guī)則詳情戳這里有勾。

規(guī)則名稱

  • 由連字符組成的小寫單詞
  • 由兩個部分組成:
    • 第一部分描述該規(guī)則應用于什么東西
    • 第二部分表示該規(guī)則檢查了什么
"number-leading-zero"
// ↑          ↑
// the thing  what the rule is checking

規(guī)則應用于整個樣式表時只包含疹启,第二個部分:

"no-eol-whitespace"
"indentation"
//    ↑
// what the rules are checking

規(guī)則取值

規(guī)則類型不同,支持的值也不同柠衅,所有取值戳這里皮仁,以下是幾個示例:

{
  "rules": {
    "at-rule-blacklist": string|[],
    "at-rule-empty-line-before": "always"|"never",
    "at-rule-name-case": "lower"|"upper",
    "block-no-empty": true
    ...
  }
}

值為null時表示禁用該規(guī)則:

{
  "rules": {
    "block-no-empty": null
  }
}

除了規(guī)則本身的取值之外,stylelint還支持一些自定義配置菲宴,給規(guī)則傳遞一個數(shù)組即可贷祈,數(shù)組第一項是規(guī)則值,第二項是自定義配置喝峦。

"selector-pseudo-class-no-unknown": [true, {
  "ignorePseudoClasses": ["global"]
}]

通過配置項势誊,你可以指定:

  • severity,錯誤級別谣蠢,取值"warning"或者"error"粟耻。默認情況下查近,所有規(guī)則的錯誤級別都是"error",通過defaultSeverity可以修改此默認值挤忙。不過霜威,需要針對某規(guī)則修改錯誤級別就需要用到該屬性。
"indentation": [2, { 
  "severity": "warning" 
}]
  • message册烈,自定義錯誤信息戈泼。
"color-hex-case": ["lower", {
    "message": "Lowercase letters are easier to distinguish from numbers"
}]

extends

stylelint的配置可以在已有配置的基礎上進行擴展,之后你自己書寫的配置項將覆蓋已有的配置赏僧。

你也可以將extends設置為一個數(shù)組大猛,每一項都是一個獨立的stylelint配置項,后一項將會覆蓋前一項淀零,而接下來你自己書寫的內容可以覆蓋他們所有挽绩。

以下示例中,rules中的indentationnumber-leading-zero將會覆蓋stylelint-config-standard中對應的規(guī)則驾中。

{
  "extends": "stylelint-config-standard",
  "rules": {
    "indentation": "tab",
    "number-leading-zero": null
  }
}

以下唉堪,./myExtendableConfig中的配置將會覆蓋stylelint-config-standard中的對應配置,而rules中的indentation將會覆蓋./myExtendableConfig中對應的規(guī)則肩民。

{
  "extends": [
    "stylelint-config-standard",
    "./myExtendableConfig"
  ],
  "rules": {
    "indentation": "tab"
  }
}

說清楚優(yōu)先級之后巨坊,我們來詳細了解一下extends的取值情況。

extends的值實際上一個定位器(或者一個包含若干定位器的數(shù)組)此改,所有可以通過require來使用的資源都可以作為extends的值。

  • node_modules中某個模塊的名字侄柔,該模塊的主文件需要返回一個配置對象共啃。
  • 指向一個.js文件或者.json文件的絕對路徑。
  • 指向一個.js文件或者.json文件的相對路徑暂题,相對于當前的配置文件移剪。

plugins

插件一般是由社區(qū)提供的,對stylelint已有規(guī)則進行擴展薪者,一般可以支持一些非標準的css語法檢查或者其他特殊用途纵苛。一個插件會提供一個或者多個檢查規(guī)則。

plugins是一個數(shù)組言津,包含一組插件的定位器攻人,這些定位器的取值跟extends一致。

plugins聲明后還需要在rules中使用它悬槽,具體規(guī)則名稱以及可能的取值需要去查看每個插件的文檔怀吻。

{
  "plugins": [
    "../some-rule-set.js"
  ],
  "rules": {
    "some-rule-set/first-rule": "everything",
    "some-rule-set/second-rule": "nothing",
    "some-rule-set/third-rule": "everything"
  }
}

獲取更多插件

processors

你還可以在stylelint的處理流中加入自己的處理函數(shù)初婆,就是這里的processors蓬坡。

processors只能作為命令和Node API使用猿棉,PostCss的插件會忽略它們。

通過processors屑咳,我們可以讓styleline去處理htmlstyle標簽里面的css代碼萨赁,MarkDown里面的css代碼塊或者js里面一段包含css的字符串。

使用方法如下:

{
  "processors": [
    "stylelint-html-processor",
    [ "some-other-processor", { "optionOne": true, "optionTwo": false } ]
  ],
  "rules": {..}
}

processors的每一項也是一個定位器兆龙,需要額外的參數(shù)時杖爽,可以傳遞一個數(shù)組,第一項是定位器详瑞,第二項是需要的參數(shù)掂林。

獲取更多處理器

ignoreFiles

一個文件匹配規(guī)則坝橡,或者一組文件匹配規(guī)則泻帮,來指定需要忽略的文件。

更高效的忽略文件的方法是通過.stylelintignore文件或者調整一下你的文件匹配規(guī)則计寇。

defaultSeverity

默認錯誤級別锣杂,可能的取值有:

  • "warning"
  • "error"

參考文章


Configuration
About rules
Example config

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市番宁,隨后出現(xiàn)的幾起案子元莫,更是在濱河造成了極大的恐慌,老刑警劉巖蝶押,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踱蠢,死亡現(xiàn)場離奇詭異,居然都是意外死亡棋电,警方通過查閱死者的電腦和手機茎截,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赶盔,“玉大人企锌,你說我怎么就攤上這事∮谖矗” “怎么了撕攒?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烘浦。 經(jīng)常有香客問我抖坪,道長,這世上最難降的妖魔是什么闷叉? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任柳击,我火速辦了婚禮,結果婚禮上片习,老公的妹妹穿的比我還像新娘捌肴。我一直安慰自己蹬叭,他們只是感情好,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布状知。 她就那樣靜靜地躺著秽五,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饥悴。 梳的紋絲不亂的頭發(fā)上坦喘,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機與錄音西设,去河邊找鬼瓣铣。 笑死,一個胖子當著我的面吹牛贷揽,可吹牛的內容都是我干的棠笑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼禽绪,長吁一口氣:“原來是場噩夢啊……” “哼蓖救!你這毒婦竟也來了?” 一聲冷哼從身側響起印屁,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤循捺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雄人,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體从橘,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年础钠,在試婚紗的時候發(fā)現(xiàn)自己被綠了洋满。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡珍坊,死狀恐怖,靈堂內的尸體忽然破棺而出正罢,到底是詐尸還是另有隱情阵漏,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布翻具,位于F島的核電站履怯,受9級特大地震影響,放射性物質發(fā)生泄漏裆泳。R本人自食惡果不足惜叹洲,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望工禾。 院中可真熱鬧运提,春花似錦蝗柔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至栈妆,卻和暖如春胁编,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鳞尔。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工嬉橙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寥假。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓市框,卻偏偏與公主長得像,于是被迫代替她去往敵國和親昧旨。 傳聞我的和親對象是個殘疾皇子拾给,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內容