web學習筆記06-stylelint初探

????最近呢,公司在準備新項目的開發,前期開始準備很多將來用到的東西,前兩天剛在研究vue.js,有空補上一篇文章講講我在vue.js里面的小感想,今天開始研究新的stylelint,一個用來標準化css和scss代碼的工具吧算是。這篇文章也基本上算是一個引導式的,沒有研究的很深,在將來的應用過程中,遇到些什么有意思的事情,以后也會補上來,這篇呢就暫且只是對stylelint進行一個簡單的介紹,和簡單的應用,具體的配合一些別的技術的應用我還是要摸索,我這就跟讀書筆記一樣,記一下大體的內容,具體的東西還是需要大家去官網看英文文檔。stylelint其實還是挺有意思的一個東西。

stylelint簡單了解

????團隊合作的時候,編寫代碼總會出現各種各樣的問題,尤其是在樣式的編寫中,大量的css和scss代碼書寫中,或多或少會出現問題,這個時候在查找問題的來源的時候,總會浪費很多時間。

????或者有時候呢,會編寫出一些帶有自己個人風格的樣式代碼,偶爾夾雜著一些自己寫的一些小錯誤在其中,當時并未發現,之后隨著時間的推移,代碼庫里的代碼量的增多,在團隊合作中,同事使用你的代碼的時候或多或少的出現了問題,又或者是使用了錯誤的代碼風格,導致給后期優化修改時帶來了諸多不便。

????這個時候呢,就需要一個可以檢查出自己代碼或者格式出現問題的工具了。跟js等代碼一樣,css也需要檢查。當然,css檢查代碼的工具已經有很多出現了,不過我們這次呢,研究的是可以檢查css和scss的stylelint。

????審查有什么作用呢?審查是一個檢查代碼是否符合編程規范以及查找代碼錯誤的過程,如果要做個比喻,那么它就是編程語言的拼寫檢查工具。代碼審查可以幫助獨立開發者更好的維護代碼,但它更大的能力是幫助團隊維護代碼。

stylelint 簡介

????stylelint 是一個基于 Javascript 的代碼審查工具,它易于擴展,支持最新的 CSS 語法,也理解類似 CSS 的語法。此外,因為它是基于 JavaScript,所以比起 Ruby 開發的 scss-lint 速度更快。

????stylelint 是一個強大和現代的 CSS 審查工具,有助于開發者推行統一的代碼規范,避免樣式錯誤。stylelintPostCSS 提供技術支持,所以它也可以理解 PostCSS 解析的語法,比如 SCSS。

????PostCSS 是一個使用 JS 解析樣式的插件集合,它可以用來審查 CSS 代碼,也可以增強 CSS 的語法(比如變量和混合宏),還支持未來的 CSS 語法、行內圖片等等。

????PostCSS 的哲學是專注于處理一件事,并做到極致,目前它已經有了 200 多個插件,由于它們都是基于 JavaScript 編寫的,所以運行速度非???。

stylelint 作用

錯誤捕獲

????有些stylelint規則旨在找出明顯的錯誤,如拼寫錯誤或者由于你的心煩意亂或者睡眼惺忪時制造的疏漏。例如,你可以禁止空白塊,無效的十六進制值,重復的選擇器,未命名的動畫名稱和錯誤的線性漸變的語法。

????其它的規則都是盡自己最大的努力捕捉更細微的錯誤。 這里有一條規則: 當你使用可以覆蓋其屬性同行(如margin-top)的速記屬性時(如margin),就會發出警告,因為這可能是由于你的疏忽造成的。另外,還有一種規則會警告你:當出現混亂局面時,如規則A出現在規則B之前,但是實際上覆蓋了規則B,因為規則A的的選擇器具有更高的優先級(如,規則A為.foo.bar{···},規則B為 .foo{···})。這是一種十分棘手的情況。

????還有一種規則使用了PostCSS的doiuse插件,用于檢查你的瀏覽器是否支持此樣式。另外一種則使用了css-colorguard插件用于提示顏色的相似性,以免造成你的混亂使用。(請注意: 這是基于PostCSS之上的stylelint的主要優勢之一:相比于其它PostCSS 插件,用很少的努力,stylelint就可以進行提示。)

強制執行最佳實踐

????如果你在樣式表中使用了系統方法,或者對你的代碼設置了一個樣式指南,你應該取締這些模式了。stylelint已經提供了這些功能。

????首先,你需要狠狠地控制你的選擇器。使用stylelint,你可以禁止超過一定特異性的選擇器或者在嵌套深度上設置限制。你可以禁止類別選擇器(例如沒有 id的選擇器),并對其余的選擇器使用正則表達式進行命名約定。

????你可以禁止!important的使用,或者你的瀏覽器并不支持的brower hacks。如果你使用Autoprefixer(或者說你應該使用),你可以禁止在源樣式表中使用供應商前綴。

????如果你想要更加嚴謹 -- 你可以花費一些時間在配置上,以保證絕對的一致性 -- 你可以強制執行樣式表屬性的順序,并為黑名單,白名單提供屬性,值,函數還有單位。

執行代碼樣式的約定

????stylelint具有自動執行代碼樣式的約定,所以你和你的隊友無需主動設置。我們致力于使這些規則更加全面靈活。

????這些規則主要針對于空格,但是同樣針對于其它的細節,如;引號,大小寫字母,在小數前寫零,使用關鍵字以及拼讀出值等等。

????夢想你和你的隊友可以建立一個格式約定(例如我們始終在聲明冒號之后留有一個空格),并在你的stylelint配置中進行修改,之后你們就不會為此再次討論。讓其執行于機器王國。

制定以及擴展一切

????Nicholas Zakas,ESLint(以及 CSS Lint)的創作者,寫到ESLint的成功在于它的擴展性。stylelint試圖遵循ESLint的領先優勢,并且提供給CSS 作者一個linter,同樣具有擴展性。

????你可以書寫并且發布自己的規則插件。現在已經具有了一大堆可以使用的;并且我們渴望看到別人的優秀插件。

????配置是可擴展的,因此可以共享。至于插件,我們從ESLint了解了這一功能的價值性。檢查其中包括WordPress和SUITCSS配置的,并且已經公布的。

????如果你不喜歡 stylelint 的內置提示,你可以手工創建屬于你自己的風格,甚至可以為你的組織進行創建。你還可以自定義用于提供警告信息的規則。

????使用stylelint的API,你可以創建文本編譯器的插件,并進行測試使stylelint 融入到你的工作流的每個方面。

stylelint 使用

安裝

npm install -g stylelint

使用

創建配置文件(三種方式)

????1..stylelintrc

{
    "rules": {
        "declaration-block-trailing-semicolon": null
    }
}

????2.stylelint.config.js

module.exports = {
    "rules": {
        "declaration-block-trailing-semicolon": null
    }
}

????3.package.json

{
    ......
    "stylelint": {
        "rules": {
            "color-hex-case": "lower"
        }
    }
}

官方配置方法

????1.本地安裝:

npm install stylelint-config-standard

????2.在配置文件.stylelintrc中配置

{
    "extends": "stylelint-config-standard"
}

????3.添加或修改標準配置中的內容

{
    "extends": "stylelint-config-standard",
    "rules": {
        "declaration-block-trailing-semicolon": null
    }
}

運行

????我在scss文件里面寫

$primary-color: #ff3253;
div{
    background-color: #0859BD;
}

????在配置文件中添加

"color-no-hex":true

????命令行運行

stylelint yourfile.css
//stylelint "src/style/scss/base.scss"
運行

具體demo測試

1.創建工程和文件

創建工程和文件

2.編寫簡單的代碼

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <link href="index.css" rel="stylesheet" type="text/css"/>
</head>
<body>
    <div id='root'>
        <p class="nihao">nihao</p>
    </div>
</body>
</html>

index.css

#root{
    background-color: #0859BD;
}
.nihao{
    font-size: 18px;
    color: #fff000;
}

3.創建package.json文件

npm init

4.安裝stylelint

npm install stylelint-config-standard

5.創建stylelint.config.js文件,編寫規則

module.exports = {
    "rules": {
        "color-no-hex":true//不允許十六進制顏色
    }
}

6.運行測試

stylelint index.css

7.根據結果修改

index.css
2:23  ?  Unexpected hex color "#0859BD"   color-no-hex
6:12  ?  Unexpected hex color "#fff000"   color-no-hex

這就算是一個簡單的demo實現了。

stylelint 規則

規則rules
規則有一百多條,我就不在這一一列舉了,以后有時間的話我會加上的。主要是目前用這個的人沒有想象中的那么多,我在這基本上算是給一些像我一樣的新手做個指引,少走些彎路,關于stylelint主要的東西,還是要看官網英文文檔。別的地方相關的文章暫時還不算多。

參考:

使用stylelint對CSS/Sass做代碼審查

使用 stylelint檢查CSS_StyleLint

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377

推薦閱讀更多精彩內容