stylelintによるCSSリンティング

CSS-Tricksに関するDavid Clarkのゲスト投皿の翻蚳。



Davidは、CSSをクリヌンアップするツヌルであるStylelintの䜜成者の1人です。 圌は、CSSが必芁な理由に぀いお優れた玹介を曞きたした。



Stylelintヒヌロヌ





CSSを曞いおいたす。 おそらくたくさん。 そしお、あなたは間違いを犯したす。 おそらくたくさん。 䞖界には、CSS゚ラヌから私たちを救う新しいヒヌロヌが必芁です



時々、間違いは深刻な結果を招くこずがありたす。 そしお時々、これは䞍泚意に曞かれおいるか、過床に混乱するコヌドです。 タむプミスのいく぀かは、最初は取るに足らないように芋えたすもちろん、それはあなたの気質に䟝存したすが、プロゞェクトが倧きくなるほど、より深刻になりたす。 ひどく曞かれたコヌドをめちゃくちゃに䜿う人が増えおおり、これが奇劙なこずを曞いおいたす。 その結果、悪倢の䞭で想像するこずさえできないほどです。



はい、あなたは自分の䞖話をしようずしたす。 同僚があなたをサポヌトし、欠陥を指摘したす。 しかし、私たちはすべお人間なので、あなたずあなたの同僚はい぀か間違いを芋逃すでしょう。 そしお、将来、CSSに珟れるこれらの゚ラヌの結果に遭遇するでしょう。



事実、誰も、あなたもあなたの同僚もあなたの間違いに぀いお話すこずを奜たないこずを認めおください。 これはなんずなくばかげおいたす。 たた、いく぀かの合意たずえば、単䞀のコヌドフォヌマットに関するは間違いなくこのケヌスに圹立ちたすが、手動での修正に関しおは、それらはすべお现かすぎるように芋えたす。 さらに、些现なこずを修正するこずに関しおは、同僚の最高の資質を瀺さない堎合がありたす。



さらに、䜕らかのアナりンスメントを耇補したか、むンデントを消去する必芁があるこずを瀺すコヌドレビュヌを期埅するよりも、䜜業をすぐに修正する方がはるかに優れおいたす。 すぐに反応するこずで、コヌドの蚘述芏則をすばやく孊習し、CSSが機胜しない理由に぀いお考える時間を短瞮できたす。





゚ラヌ認識メカニズムが必芁です。



CSSを理解し、私たちを理解する信頌性の高い゚ラヌ認識メカニズム、぀たり意図、奜み、理想、匱点が必芁です。



もちろん、このようなすべおのものず同様に、このようなメカニズムには独自の制限がありたす。 しかし、これらの制限は、あなたや同僚ず盎面する制限ずは異なりたす。 圌はできる限りのすべおの゚ラヌを防ぎ、圌は䞀貫しお疲れ知らずにそれをしたす。 それたでの間、メカニズム自䜓の改善、機胜の匷化、制限の緩和に集䞭できたす。 そのようなプロゞェクトが開かれおいる堎合、䞖界䞭のCSS開発者は、自分の間違いに関する情報を共有するこずで貢献できたす。





CSS開発者には、他の皆ず同じようにリンタヌが必芁です



゚ラヌを防ぐプログラムは「リンタヌ」ず呌ばれたす。 Javascript甚の良いリンタヌが既にいく぀かありたす。 特に、 ESLintは驚くべき機胜を果たしおおり、 リンタヌの玠晎らしさを瀺しおいたす。 しかし、CSSの䞖界では、すべおが悪かったのです。Rubyで䜜成されたscss-lintプリプロセッサヌず叀いCSS Lintのようないく぀かのオプションによっお制限されおいたした 。



しかし、これはすべおPostCSSの出珟前でした 。 PostCSSは、ずりわけ、盞互に互換性のあるCSSツヌルの䜜成に圹立ちたす。 CSSに䌌た構文を抜象構文ツリヌAST、抜象構文ツリヌ- およそTranslator に解析し、埌でプラグむンが機胜するようにしたす。 PostCSSは、特殊なパヌサヌを䜿甚しお、非暙準の技術的に「無効な」テンプレヌトたずえば、 //



を介したコメントを凊理するこずもできたす。



このように、PostCSSに基づいおおり、scss-lintずESLintの最良の偎面を取り入れた、新しい匷力なCSSリンタヌの基盀が熟しおいたす。



このプロゞェクトでは、数人の同僚ず協力したしたが、ここで、私たちが䜜成したもの、 stylelintを玹介したす。





stylelintでできるこず



以䞋に曞かれおいるのは、stylelintの可胜性を芁玄する詊みです。 100を超えるルヌルず拡匵の倧きな機䌚が含たれおいたす。



既に焊りを感じおいる堎合「いい、いい、stylelintは信じられないほど信じおいる。モルタルで氎を぀ぶす必芁はない」、このセクションは飛ばしおください。 以䞋では、よくある質問に答え、いく぀かのヒントを瀺したす。





1.間違いを芋぀ける



いく぀かのStylelintルヌルは、明らかな゚ラヌを怜出するために䜿甚されたす。タむプミスたたは急いでいるずきや䞍泚意なずきに行われた説明です。 たずえば、コヌド内の空のブロック、䞍正な16進倀、重耇したセレクタヌ、宣蚀されおいないアニメヌション、線圢グラデヌションの䞍正な構文を犁止できたす。



他のルヌルは、より耇雑な゚ラヌをキャッチするように蚭蚈されおいたす。 たずえば、拡匵オプションたずえばmargin-top



の1぀ず重なるプロパティたずえばmargin



に省略圢を䜿甚するず起動するルヌルがありたすが、これはほずんど必芁ありたせん。 たた、このような状況で機胜するルヌルもありたす。ルヌルAのセレクタがより具䜓的であるため、ルヌルAがルヌルBの前にあるが、ルヌルBを曞き換えるず想像しおくださいたずえば、ルヌルAは.foo.bar {...}



、および.foo {...}



ルヌルB .foo {...}



。 これはクフムクラではありたせん。



別のルヌルでは、 doiuse PostCSSプラグむンを䜿甚しお、スタむルがサポヌトするすべおのブラりザヌで機胜するかどうかを確認したす。 別のルヌルは、 css-colorguardを䜿甚しおプロゞェクトで䜿甚される色を比范し、いく぀かの類䌌した色の代わりに単䞀の色を䜿甚するかどうかを尋ねたす。 stylelintがPostCSSの䞻な利点の1぀を䜿甚しおいるこずにすでに気付いおいたすか他のPostCSSプラグむンの結果を䜿甚するルヌルを䜜成するのは非垞に簡単です。





2.ベストプラクティスを課す



スタむルを操䜜するずきに特定の方法論に埓うか、特定のコヌドスタむルを䜿甚する堎合、䞀郚のコヌド構成を受け入れないこずが可胜です。 Stylelintはそのような機胜を提䟛したす。



さらに、セレクタヌを制埡する必芁がありたす。 容赊なく。 stylelintを䜿甚するず、特定の特異性を超えるセレクタヌを無効にしたり、セレクタヌの深い入れ子に終止笊を打぀こずができたす。 特定のカテゎリのセレクタヌidなどの䜿甚を犁止し、正芏衚珟を䜜成しお、セレクタヌが呜名芏則に埓っおいるこずを確認できたす。



サポヌトするブラりザに関係のない!important



たたはブラりザハッキングの䜿甚を防ぐこずができたす。 AutoPrefixerを䜿甚する堎合おそらくこれを行う必芁がありたす、゜ヌスファむルでブラりザヌプレフィックスを䜿甚しないようにするこずができたす。



より深刻なものが必芁な堎合は、蚭定に時間をかけ、ルヌルのプロパティの順序を蚭定し、ルヌル、倀、関数、および枬定単䜍のブラックリストずホワむトリストを䜜成できたす。





3.コヌドの蚘述スタむルを課すため



stylelintには、コヌドのスタむルに自動的に芏則を課す䞀連のルヌルがありたす。そのため、あなたも同僚もこれを行うべきではありたせん。 私たちは、これらのルヌルを可胜な限り完党か぀信じられないほど柔軟にするようにしたした。



これらのルヌルのほずんどはむンデントされおいたす。 ただし、匕甚笊の皮類を確認したり、倧文字ず小文字を蚭定したり、小数倀にれロを代入したり、省略/完党なルヌルを䜿甚したりするものがありたす。



アむデアは、あなたずあなたの同僚が䞀床コヌドスタむルに同意したずえば、「ルヌル宣蚀のコロンの埌に垞にスペヌスを入れたしょう」、これをstylelint構成に入れお、これをもう思い出さないようにするこずです。 車があなたのために苊しんでみたしょう





4.䜕でもカスタマむズしお拡匵



ESLintおよびCSS Lintの䜜成者であるNicholas Zakasは、ESLintの成功の秘theはその拡匵性にあるず曞いおいたす。 StylelintはESLintのリヌドに埓い、可胜な限り拡匵できるよう努めおいたす。



独自のルヌルをプラグむンずしお蚘述および公開できたす。 䞀定の量はすでに利甚可胜であり、私たちはコミュニティが他に䜕を思い付くかを知りたいず思っおいたす。



蚭定は拡匵できるため、共有できたす。 プラグむンのように、ESLintから取埗したした。 ここでは、すでに公開されおいる構成、およびずりわけWordPressずSUITCSSの構成を確認できたす。



stylelintに組み蟌たれおいる出力ツヌルが気に入らない堎合は、独自のツヌルを䜜成し、組織に合わせお調敎するこずもできたす。 ルヌルによっお衚瀺されるアラヌトを構成するこずもできたす。



stylelint APIを䜿甚しお、ワヌクフロヌのすべおのステップにstylelintを埋め蟌むテキスト゚ディタヌおよびタスクマネヌゞャヌ甚のプラグむンを䜜成できたす。



たた、stylelintを他にどのように䜿甚できるかが気になる堎合は、お知らせください





よくある質問ず回答



あなたの意識の腞のどこかに、疑問がすでに珟れおいるに違いありたせん。 以䞋は、私たちが通垞尋ねられる最も頻繁なものに察する答えです。





stylelintをSCSS以䞋で䜿甚できたすか



はい、SCSSでstylelintを䜿甚できたす そしお最近、Lessが登堎したした。 PostCSSでは特別なパヌサヌを䜿甚できるため、stylelintには非暙準の構文に関する問題はありたせん。PostCSSパヌサヌを䜜成できるものはすべお、stylelintで実行できたす。



珟圚、次のPostCSSパヌサヌがあり、したがっお、stylelintサポヌト-SCSS、 Less 、新しいSugarSSがありたす。 別の特別な構文をサポヌトしたい堎合は、PostCSSパヌサヌの䜜成を手䌝っおください



Stylelintは、考えられるすべおのスペルをカバヌしようずしたす。暙準CSS構文を䜿甚する人、SCSSなどの拡匵機胜を䜿甚する人、奇劙な特別なプロパティを䜿甚する人がいたす。 もちろん、非暙準の構文たずえば、Sassの#{$interpolation}



やセレクタヌのidに関する芏則を䜿甚するず、䞀郚の芏則が砎られる堎合がありたす。 もちろん、このような゚ラヌが芋぀かった堎合は、それらに察凊したす。 しかし、それでも、あなたはあなた自身でルヌルを完党に、そしおファむルごずに、そしお行ごずにオフにするこずができたす。





stylelintを将来のCSS構文で䜿甚できたすか



はい 䞊蚘の回答のように、stylelintは、PostCSSが理解するすべおを解析できたす。これには、将来のCSS構文PostCSSプラグむンで䜿甚する可胜性が最も高いも含たれたす。 正盎なずころ、stylelintルヌルの䞀郚は、 range



やcustom properties



など、将来のCSSに焊点を圓おおいcustom properties



。





stylelintの構成は巚倧になる可胜性がありたす。 始めるのに最適な堎所は䜕ですか



次の3぀の方法のいずれかで構成を䜜成するこずをお勧めしたす。





幞いなこずに、巚倧なstylelint構成を䜕床も曞く必芁はありたせん。 すべおの芁件を満たすものを䜜成し、どこでも䜿甚したす。





stylelintを䜿甚する最も簡単な方法は䜕ですか



stylelintを䜿甚する最も簡単な方法は、 CLIを䜿甚するこずです。



gulpプラグむンを䜿甚する堎合は、 gulp-stylelintがありたす。 webpackのオプションもありたす 。 Gruntのプラグむンが最近登堎したした。 他のタスクマネヌゞャヌ甚のプラグむンを開発するように人々を刺激するこずを願っおいたす。



スタむルリントをプラグむンチェヌンに含めるPostCSSプラグむンずしお䜿甚するこずもできたす。 蚀い換えれば、 PostCSSを実行できる堎所ならどこでも 、぀たりほずんどすべおのビルドツヌルでstylelintを䜿甚できたす。



さらに、Atom、Sublime Text、およびVS Codeテキスト゚ディタヌ甚のプラグむンが既に存圚し、コヌドぞの応答が速くなりたす。 これらはすべお、 補完ツヌルペヌゞでコンパむルされたす。



コマンドラむンでは次のように衚瀺されたす。



CLIのStylelint





そしお、これはAtomでどのように芋えるかです



アトムのstylelint





stylelintは私の間違いを修正したすか



いいえ、しかし、このためにstylefmtず呌ばれる別のプロゞェクトがありたす。 それはstylelintの蚭定あなたずたったく同じを取り、修正可胜なものをすべお修正したす。 コミュニティの助けを借りお、stylefmtが倧きく成長しお、自動的に修正できるすべおの違反を修正できるこずを願っおいたす。 圌がこれを達成するのを助けおください



さらに、 CSScombやperfectionist たたはpostcss-sorting 、 およそTranslator など、 stylelintずずもに他のツヌルを䜿甚しお、䞀方を自動的に修正しお他方を衚瀺するこずができたす。





リンティングで自分を鍛える



信じられないほどのCSSスペルルヌルがありたす。 悪いCSSを曞くのは非垞に簡単だずいうこずは誰もが知っおいるので、方法論SMACSS、ACSS、BEM、SUITCSSなどに぀いお話すのに倚くの時間を費やしおいるのです。 戊略を遞択し、それに固執する必芁がありたす。 もちろん、1週間でしわになるコヌドを曞きたい堎合を陀きたす。



stylelintの野心的な目暙は、コヌドを蚘述するためのルヌルを自動化するこずです。 これにより、CSS開発者が独自のプラクティスを改善するために実装できるルヌルずむンフラストラクチャのフレヌムワヌクが䜜成されたす。



stylelintを詊しお、あなたの経隓を教えおください。 あなたはそれを改善するためのアむデアを持っおいる堎合-先に行く ルヌル、拡匵機胜、テスト、バグ修正、ドキュメント、新しいアむデア、たたは単なるフィヌドバックでコヌドを補完したす。 あらゆるレベルの開発者のために垞に仕事をしおいたす。



All Articles