主頁(yè) > 知識(shí)庫(kù) > CSS代碼檢查工具stylelint的使用方法詳解

CSS代碼檢查工具stylelint的使用方法詳解

熱門標(biāo)簽:鐵路電話系統(tǒng) 智能手機(jī) 呼叫中心市場(chǎng)需求 美圖手機(jī) 網(wǎng)站文章發(fā)布 檢查注冊(cè)表項(xiàng) 銀行業(yè)務(wù) 服務(wù)器配置

CSS不能算是嚴(yán)格意義的編程語(yǔ)言,但是在前端體系中卻不能小覷。 CSS 是以描述為主的樣式表,如果描述得混亂、沒(méi)有規(guī)則,對(duì)于其他開(kāi)發(fā)者一定是一個(gè)定時(shí)炸彈,特別是有強(qiáng)迫癥的人群。CSS 看似簡(jiǎn)單,想要寫出漂亮的 CSS 還是相當(dāng)困難。所以校驗(yàn) CSS 規(guī)則的行動(dòng)迫在眉睫。stylelint是一個(gè)強(qiáng)大的現(xiàn)代 CSS 檢測(cè)器,可以讓開(kāi)發(fā)者在樣式表中遵循一致的約定和避免錯(cuò)誤。本文將詳細(xì)介紹CSS代碼檢查工具stylelint

概述

stylelint擁有超過(guò)150條的規(guī)則,包括捕捉錯(cuò)誤、最佳實(shí)踐、控制可以使用的語(yǔ)言特性和強(qiáng)制代碼風(fēng)格規(guī)范。它支持最新的CSS語(yǔ)法,并且靈活可配置

Vue

下面在Vue框架下安裝使用stylelint

1、安裝stylelint、stylint-config-standard和stylelint-order

npm install stylelint --save-dev
npm install stylelint-config-standard --save-dev
npm install stylelint-order --save-dev

其中,stylelint是運(yùn)行工具,stylelint-config-standard是stylelint的推薦配置,stylelint-order是CSS屬性排序插件

安裝完成后,package.json文件中會(huì)自動(dòng)添加如下字段

"stylelint": "^9.1.3",
"stylelint-config-standard": "^18.2.0",
"stylelint-order": "^0.8.1",

2、在根目錄下創(chuàng)建.stylelintrc配置文件

{ 
"extends": "stylelint-config-standard", 
"plugins": ["stylelint-order"],
"rules": {
"order/order": [
"declarations",
"custom-properties",
"dollar-variables",
"rules",
"at-rules"
],
"order/properties-order": [
"position",
"z-index",   
"top",
"bottom",
"left",     
"right",
"float",
"clear",
"columns",
"columns-width",
"columns-count",
"column-rule",
"column-rule-width",
"column-rule-style",
"column-rule-color",
"column-fill",
"column-span",
"column-gap",   
"display",
"grid",
"grid-template-rows",
"grid-template-columns",
"grid-template-areas",
"grid-auto-rows",
"grid-auto-columns",
"grid-auto-flow",
"grid-column-gap",
"grid-row-gap",
"grid-template",
"grid-template-rows",
"grid-template-columns",
"grid-template-areas",
"grid-gap",
"grid-row-gap",
"grid-column-gap",
"grid-area",
"grid-row-start",
"grid-row-end",
"grid-column-start",
"grid-column-end",
"grid-column",
"grid-column-start",
"grid-column-end",
"grid-row",
"grid-row-start",
"grid-row-end",   
"flex",
"flex-grow",
"flex-shrink",
"flex-basis",
"flex-flow",
"flex-direction",
"flex-wrap",
"justify-content",
"align-content",
"align-items",
"align-self",
"order",
"table-layout",
"empty-cells",
"caption-side",
"border-collapse",
"border-spacing",
"list-style",
"list-style-type",
"list-style-position",
"list-style-image",
"ruby-align",
"ruby-merge",
"ruby-position",
"box-sizing",
"width",
"min-width",
"max-width",
"height",
"min-height",
"max-height",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",   
"border",
"border-width",
"border-top-width",
"border-right-width",
"border-bottom-width",
"border-left-width",
"border-style",
"border-top-style",
"border-right-style",
"border-bottom-style",
"border-left-style",
"border-color",
"border-top-color",
"border-right-color",
"border-bottom-color",
"border-left-color",
"border-image",
"border-image-source",
"border-image-slice",
"border-image-width",
"border-image-outset",
"border-image-repeat",
"border-top",
"border-top-width",
"border-top-style",
"border-top-color",
"border-top",
"border-right-width",
"border-right-style",
"border-right-color",
"border-bottom",
"border-bottom-width",
"border-bottom-style",
"border-bottom-color",
"border-left",
"border-left-width",
"border-left-style",
"border-left-color",
"border-radius",
"border-top-right-radius",
"border-bottom-right-radius",
"border-bottom-left-radius",
"border-top-left-radius",
"outline",
"outline-width",
"outline-color",
"outline-style",
"outline-offset",
"overflow",
"overflow-x",
"overflow-y",
"resize",
"visibility",
"font",
"font-style",
"font-variant",
"font-weight",
"font-stretch",
"font-size",
"font-family",
"font-synthesis",
"font-size-adjust",
"font-kerning",    
"line-height",
"text-align",
"text-align-last",
"vertical-align",   
"text-overflow",
"text-justify",
"text-transform",
"text-indent",
"text-emphasis",
"text-emphasis-style",
"text-emphasis-color",
"text-emphasis-position",
"text-decoration",
"text-decoration-color",
"text-decoration-style",
"text-decoration-line",
"text-underline-position",
"text-shadow",   
"white-space",
"overflow-wrap",
"word-wrap",
"word-break",
"line-break",
"hyphens",
"letter-spacing",
"word-spacing",
"quotes",
"tab-size",
"orphans",
"writing-mode",
"text-combine-upright",
"unicode-bidi",
"text-orientation",
"direction",
"text-rendering",
"font-feature-settings",
"font-language-override",
"image-rendering",
"image-orientation",
"image-resolution",
"shape-image-threshold",
"shape-outside",
"shape-margin",
"color",
"background",
"background-image",
"background-position",
"background-size",
"background-repeat",
"background-origin",
"background-clip",
"background-attachment",
"background-color",
"background-blend-mode",
"isolation",
"clip-path",
"mask",
"mask-image",
"mask-mode",
"mask-position",
"mask-size",
"mask-repeat",
"mask-origin",
"mask-clip",
"mask-composite",
"mask-type",
"filter",
"box-shadow",
"opacity",
"transform-style",
"transform",
"transform-box",
"transform-origin",
"perspective",
"perspective-origin",
"backface-visibility",
"transition",
"transition-property",
"transition-duration",
"transition-timing-function",
"transition-delay",
"animation",
"animation-name",
"animation-duration",
"animation-timing-function",
"animation-delay",
"animation-iteration-count",
"animation-direction",
"animation-fill-mode",
"animation-play-state",
"scroll-behavior",
"scroll-snap-type",
"scroll-snap-destination",
"scroll-snap-coordinate",
"cursor",
"touch-action",
"caret-color",
"ime-mode",
"object-fit",
"object-position",
"content",
"counter-reset",
"counter-increment",
"will-change",
"pointer-events",
"all",
"page-break-before",
"page-break-after",
"page-break-inside",
"widows"
],  
"no-empty-source": null,
"property-no-vendor-prefix": [true, {"ignoreProperties": ["background-clip"]}],
"number-leading-zero": "never",
"number-no-trailing-zeros": true,
"length-zero-no-unit": true,
"value-list-comma-space-after": "always",
"declaration-colon-space-after": "always",
"value-list-max-empty-lines": 0,
"shorthand-property-no-redundant-values": true,
"declaration-block-no-duplicate-properties": true,
"declaration-block-no-redundant-longhand-properties": true,
"declaration-block-semicolon-newline-after": "always",
"block-closing-brace-newline-after": "always",
"media-feature-colon-space-after": "always",
"media-feature-range-operator-space-after": "always",
"at-rule-name-space-after": "always",
"indentation": 2,
"no-eol-whitespace": true,
"string-no-newline": null
}
}

3、使用stylelint驗(yàn)證CSS代碼即可,如驗(yàn)證src目錄下的所有vue文件

react

react中使用styled-components來(lái)書寫CSS代碼,stylelint同樣提供了插件來(lái)校驗(yàn)CSS

1、安裝stylelint、stylelint-processor-styled-components、stylelint-config-styled-components、stylelint-config-recommend、stylelint-order

npm install --save-dev stylelint@9.1.3
npm install --save-dev stylelint-processor-styled-components
npm install --save-dev stylelint-config-styled-components
npm install --save-dev stylelint-config-recommended
npm install --save-dev stylelint-order

注意: 由于stylelint更新到9.2版本后,導(dǎo)致styled-components中的CSS代碼無(wú)法正常校驗(yàn),所以穩(wěn)妥起見(jiàn),使用9.1.3版本的

2、在根目錄下新建配置文件.stylelintrc

{
"processors": ["stylelint-processor-styled-components"],
"extends": [
"stylelint-config-recommended",
"stylelint-config-styled-components"
],
"plugins": ["stylelint-order"],
"rules": {
"order/order": [
"declarations",
"custom-properties",
"dollar-variables",
"rules",
"at-rules"
],
...
}

3、同樣地,使用stylelint命令即可校驗(yàn)

注意事項(xiàng)

1、fix命令

在stylelint的150多條規(guī)則中,使用fix命令,可以自動(dòng)修復(fù)一些命令。但是,該fix命令一定要慎用。筆者在使用fix命令后,stylelint將React工程中的所有js文件里的代碼全部清除,只留著了下可以識(shí)別的css部分

stylelint '**/*.js' --fix

2、配置scripts

可以在package.json中配置stylelint的快捷方式

"scripts": {
"lintcss": "stylelint 'src/**/*.js'"
}

這樣,使用npm run lintcss 命令即可實(shí)現(xiàn)相同效果

3、如果提示如下錯(cuò)誤

Error: No configuration provided for

是因?yàn)樵诟窂较聸](méi)有發(fā)現(xiàn)配置文件,如.stylelintrc

更多關(guān)于CSS代碼檢查工具stylelint的使用方法請(qǐng)查看下面的相關(guān)鏈接

您可能感興趣的文章:
  • jquery css實(shí)現(xiàn)流程進(jìn)度條
  • javascript+css實(shí)現(xiàn)進(jìn)度條效果
  • JS+CSS實(shí)現(xiàn)3D切割輪播圖
  • JS+CSS+HTML實(shí)現(xiàn)“代碼雨”類似黑客帝國(guó)文字下落效果
  • vue學(xué)習(xí)筆記之Vue中css動(dòng)畫原理簡(jiǎn)單示例
  • 基于html+css+js實(shí)現(xiàn)簡(jiǎn)易計(jì)算器代碼實(shí)例
  • 如何通過(guò)Django使用本地css/js文件
  • 詳解CSS故障藝術(shù)

標(biāo)簽:樂(lè)山 上海 長(zhǎng)治 河南 新疆 滄州 沈陽(yáng) 紅河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《CSS代碼檢查工具stylelint的使用方法詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266