前言
本文詳細介紹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
中的indentation
和number-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
去處理html
中style
標簽里面的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"