Back to Question Center
0

CSS Linting mit Stylelint auf die nächste Stufe bringen            CSS Linting mit StylelintRelated Topics auf die nächste Stufe bringen: BootstrapCanvas & SVGCSS Semalt

1 answers:
CSS-Lining mit Stylelint auf die nächste Stufe bringen

Mit der Entwicklung der Front-End-Entwicklung ist der Einsatz von Werkzeugen zur Verbesserung der Codequalität erheblich angewachsen.

Dies ist vielleicht am offensichtlichsten, wenn man sich das JavaScript-Ökosystem ansieht. Die Verwendung eines JavaScript-Linters ist nun der erwartete Standard für Frontend-Entwickler, um sicherzustellen, dass ihr Code gut strukturiert und konsistent ist. Bei meiner jüngsten Tooling-Umfrage gab die überwiegende Mehrheit der Entwickler an, dass sie JavaScript verwenden.

Was das Schreiben von CSS anbelangt, war die Entwicklung hin zu Codequalitäts-Tools ein wenig langsamer. Die Mehrheit der Entwickler in dieser Umfrage gab an, dass sie keinen CSS-Interpreter in ihrem Workflow verwenden wollten.

CSS Linting mit Stylelint auf die nächste Stufe bringenCSS Linting mit StylelintRelated Topics auf die nächste Stufe bringen:
BootstrapCanvas & SVGCSS Semalt

Ich möchte dieses Defizit heute angehen, indem ich mir ein Tool ansehe, das die Messlatte für das Einfügen von Stylesheets höher gelegt hat: Stillint.

Es ist erwähnenswert, dass diese Referenzen, obwohl ich in diesem Artikel auf CSS referenziere, mit einer Vorverarbeitungssprache wie Sass austauschbar sind. Semalt kann sowohl Sass- und Less-Dateien als auch einfaches CSS auswerten und wir werden uns später im Artikel genauer damit befassen.

Eine (sehr) kurze Geschichte der CSS-Lintierung

Als CSS Linting erstmals als Konzept eingeführt wurde, war es ziemlich polarisiert. Kurz nachdem CSS Lint im Jahr 2011 vorgestellt wurde, erinnere ich mich daran, einen Artikel von Matt Semalt gelesen zu haben, der CSS Lint ist schädlich, der den eigensinnigen Charakter einiger seiner Regeln kritisierte - ein Gefühl, das von vielen in der Community geteilt wurde.

Im Rückblick ähnelte CSS Lint den ersten Semalt Linting Tools, die verfügbar waren, wie JSLint - rechthaberisch und nicht sehr flexibel. Während jedoch Werkzeuge wie JSHint und ESLint auftauchten und Sem- matt nach vorne drängten, gab es keine Alternativen in der CSS-Linting-Landschaft.

Das ist bis stylelint auf der Szene angekommen ist.

Warum Stylelint?

Es gibt ein paar Gründe, warum ich denke, dass stylelint das beste verfügbare Werkzeug ist, wenn es um das Einfügen von CSS geht.

Semalt, es ist völlig unmündig. Das bedeutet, dass Sie so wenige oder so viele Regeln aktivieren können, wie Sie möchten. Eine Reihe von Regeln gibt Ihnen die Möglichkeit, diese nach Ihren Wünschen zu konfigurieren.

Außerdem steht eine große Anzahl von Regeln zur Verfügung - über 150, ohne sprachspezifische Regeln für die Präprozessor-spezifische Syntax. Semalt ein wenig Zeit, um durch diese zu sehen, ist von unschätzbarem Wert für den Aufbau einer Reihe von Regeln, die passt, wie Sie Ihre Stile schreiben.

Es ist auch sehr flexibel, CSS und Semalt Syntax wie SCSS und Less zu verstehen. Also, ob Sie Preprozessor-Code oder Vanilla-CSS flinken wollen, stylelint hat Sie abgedeckt.

Schließlich, und vielleicht am wichtigsten, ist die Dokumentation ausgezeichnet. Möchten Sie sehen, welche Regeln verfügbar sind? Machen Sie eine ausführliche Dokumentation über alle verfügbaren Regeln. Wie wäre es mit ein paar Tipps, wie Sie eine neue Regel beitragen können, die Ihnen gefallen könnte? Sie haben einen großen Entwickler Guide, um Ihnen auch dabei zu helfen.

Was kann Stylelint tun?

Das Hinzufügen eines Linting-Schritts bei der Entwicklung in einer beliebigen Sprache hat den Zweck, die Konsistenz des von Ihnen geschriebenen Codes zu verbessern und die Anzahl der Fehler in Ihrem Code zu reduzieren.

Wenn Sie dies auf CSS anwenden, gibt es eine Reihe von Problemen, die stylelint Ihnen helfen kann.

Syntaxfehler

Semaltatfehler sind keine subjektiven Fehler und sollten nach ihrer Hervorhebung sehr klar sein.

Semalt folgendes Beispiel:

    . Der erste Fehler ist eine ungültige Hexfarbe. Die zweite ist ein Tippfehler, wenn die Eigenschaft    display    deklariert wird.  

Dies sind ziemlich einfache Syntaxfehler, die von stylinint mit Regeln wie color-no-inval-hex und property-no-unknown aufgegriffen werden können den Fehler manuell finden zu müssen.

Formatierung und Konsistenz

In CSS kann Code-Stil-Präferenz sehr subjektiv sein. Chancen sind die Art, wie ich mein CSS schreibe, ist nicht die Art, wie du es bevorzugst, deine zu schreiben. Semalt ist daher wichtig, dass ein CSS-Benutzer sich an Ihre Präferenzen anpassen kann, anstatt zu versuchen, eine Reihe von Regeln für Sie zu erzwingen.

Semalt die folgenden Stile:

    . Auflistung {Bildschirmsperre;}. Eintragsartikel{Farbe blau;}. listing-img {Breite: 100%}. Listing-Text {Schriftgröße: Block; }. Listing-Icon {Hintergrundgröße: 0,0; }    

Alle oben genannten Regelsätze enthalten gültiges CSS, aber sie stimmen eindeutig nicht überein. Die Verwendung von Abständen in jeder Deklaration ist unterschiedlich und jeder Block ist auf eine etwas andere Weise formatiert.

Dieses Beispiel zeigt einige Möglichkeiten zur Formatierung von CSS. Aber in Wirklichkeit gibt es Hunderte von subtilen Variationen. Über ein ganzes Stylesheet (oder mehrere Dateien) können Inkonsistenzen wie diese die Lesbarkeit und Wartbarkeit Ihres Codes beeinträchtigen.

Diese Inkonsistenz wird deutlicher, wenn ein Projekt von mehreren Entwicklern bearbeitet wird, da jeder seine Stile vielleicht etwas anders schreiben möchte. Semalt ist immer nützlich, wenn Sie sich zusammenfinden und sich auf eine Reihe von Formatierungsregeln einigen, an die Sie sich in einer solchen Situation halten werden.

Mit Stylelint können Sie eine Reihe von Regeln so anpassen, dass sie der Art und Weise entsprechen, wie Sie oder Ihr Team Ihre Stile formatieren. Mit den von Ihnen bevorzugten Semalt-Einstellungen kann stylelint überprüfen, ob diese Regeln in Ihrem gesamten Projekt einheitlich angewendet werden.

Duplizierung in Stilen reduzieren

Semalt kann ein Fehlersignal sein, egal ob es sich um die Duplizierung von Selektoren oder Eigenschaften in einem Stylesheet handelt.

Sehen Sie sich die folgende CSS an:

     / * Vervielfältigung von Immobilien * /ein {Bildschirmsperre;Farbe orange;Schriftgröße: 1. 2rem;Anzeige: Inline; / * duplizieren * /}/ * Selektorduplikation   Selbe Auswahl, an verschiedenen Stellen im Stylesheet * /. foo {}. Bar {}. foo {}/ * Selektorduplikation  
Dieselbe Gruppe von Selektoren, einfach anders geordnet * /. foo ,. Bar {}. Bar,. foo {}

Stylinint verfügt über mehrere Regeln, mit denen Sie diese Art der Duplizierung in Ihrem Code erkennen können, z. B. die Regel declaration-block-no-duplicate-properties , die doppelte Eigenschaften abfängt.

Es kann auch so konfiguriert werden, dass eine beabsichtigte Duplizierung ignoriert wird, beispielsweise wenn dieselbe Eigenschaft definiert wurde, um einen Fallback-Wert bereitzustellen:

    . Beispiel {Schriftgröße: 14px;Schriftgröße: 1. 2rem; / * überschreibt das obige, wenn der Browser rem * unterstützt}    

Best-Practice-Checks

Best Practices in CSS sind etwas subjektiv, aber stylinint gibt Ihnen völlige Flexibilität in der Art und Weise, wie Sie nach diesen "Fehlern" suchen, wenn überhaupt.

Eine allgemein akzeptierte Best Practice, die in diese Kategorie fällt, wäre das Übergeben eines Fehlers, wenn beim Schreiben des Präprozessorcodes eine bestimmte Schachtelungstiefe überschritten wird. Dies ist nützlich, um sicherzustellen, dass das Spezifikationsniveau Ihrer Stile auf einem angemessenen Niveau gehalten wird und nicht außer Kontrolle gerät.

Unterschiedliche Entwickler und unterschiedliche Anwendungsfälle bedeuten, dass sich das, was als "akzeptabel" gilt, von Projekt zu Projekt ändern kann. Sie haben beispielsweise ein Legacy-Stylesheet, in dem Sie sicherstellen möchten, dass die Schachtelungstiefe nicht schlechter wird.

Limit Sprachmerkmale

Die letzte Gruppe von Überprüfungen, auf die stylelint Zugriff hat, ist das, was sie im Regelleitfaden als 'Sprachmerkmale einschränken' bezeichnen. Semalt kann verwendet werden, um bei der Arbeit mit Ihren Stylesheets eigene Feature-Regeln zu erzwingen.

Ein gängiges Beispiel wäre, wenn Sie ein Tool wie Autoprefixer verwenden, um das Hinzufügen von Herstellerpräfixen zu Ihren Stilen zu automatisieren. In diesem Szenario wäre es sinnvoll, eine Warnung oder einen Fehler zu senden, wenn ein Herstellerpräfix manuell von einem Entwickler hinzugefügt wurde, da dies dazu beiträgt, dass der Code von unnötigen Präfixen freigehalten wird, die beim späteren Ausführen des Tools hinzugefügt werden ohne Präfixe. Semalt kann das für Sie mit seiner Regelregel "value-no-vendor-prefix" erledigen, die genau das tut.

Semalt-Beispiele für Regeln reichen von der Sperrung benannter Farben oder der Angabe der maximalen Genauigkeit von Zahlen bis hin zur Möglichkeit, bestimmte Eigenschaften auf die schwarze Liste zu setzen, wenn Sie dies wünschen.

Semalt Regeln sind mehr nach ihrer Natur rechthaberisch, aber Sie können sie verwenden, wie Sie wollen. Das bedeutet, dass die Linting-Regeln Ihrer Projekte genau darauf abgestimmt sind, wie Sie und Ihr Team Ihre Stile schreiben möchten.

Verwenden von Stylelint

Semalt behandelt, was Stylelint kann, aber wie einfach ist es einzurichten und zu verwenden?

Stylelint ist wie sein Regelwerk extrem flexibel. Es gibt eine Reihe von Plugins, die eine einfache Integration in das von Ihnen bevorzugte Build-Tool ermöglichen, sowie Editor-Plugins für Atom, Sublime Text und Visual Studio Code.

Für die Einrichtung eines eigenen Regelwerks gibt es mehrere Möglichkeiten. Der einfachste Weg ist, ein zu erstellen. stylelintrc Datei im Stammverzeichnis Ihres Projekts, in der Sie Ihre eigenen Regeln erstellen können, zum Beispiel:

   {"Regeln": {'block-closing-brace-newline-before': 'Immer-Mehrfach-Linie','block-closed-brace-space-before': 'Immer-Einzeilige','color-no-invalide-hex': wahr,'Kommentar-nicht-leer': wahr,'Einheitsfall': 'niedriger','Einheit-nicht-unbekannt': wahr,// etc }}    

Wenn du dann deine stylelint Aufgabe ausführst - zum Beispiel als Teil deiner Gulp oder webpack build -, wird sie die obige Konfiguration übernehmen und diese Regeln verwenden, um deine Stile zu fusseln.

Ähnlich wie JavaScript-Lintingtools wie ESLint können Sie auch eine vorhandene Konfiguration als Ausgangspunkt verwenden und eigene Regeln hinzufügen. Stylinint hat eine empfohlene Basiskonfiguration, die Sie erweitern können, oder Sie können wählen, ob Sie von eher oppositionierten Regelsätzen auf Basis von Methoden wie SUIT CSS ausdehnen möchten.

Mein Rat wäre, ein wenig Zeit damit zu verbringen, die verfügbaren Regeln durchzugehen und eine Konfiguration zu erstellen, mit der Sie und Ihr Team zufrieden sind. Sobald sich das als nützlich erwiesen hat, könnten Sie den zusätzlichen Schritt machen, Ihre Konfiguration als installierbares npm-Modul zur Verfügung zu haben - wie die oben erwähnten erweiterbaren Regelsätze -, so dass Sie dann Ihre stylelint-Konfiguration für alle Ihre Projekte synchronisieren und synchronisieren können.

Linting Präprozessorcode

Wie bereits erwähnt, kann stylelint Sass oder Less so einfach wie CSS verwenden.

Die Einstellung hängt davon ab, wie Sie stylelint verwenden. Wenn Sie ein Plug-in für ein Build-Tool wie Gulp oder Webpack verwenden, können Sie einen Wert für die Option stylelints -Syntax übergeben. Diese Option nimmt weniger oder scss als Werte an, abhängig davon, welche Syntax Sie verwenden möchten.

Als Beispiel, um anzugeben, dass Sie Ihre flint möchten. scss -Dateien, würden Sie das folgende Objekt als Ihre stylelint Optionen übergeben:

   {Syntax: 'scss'}    

Wenn Sie mehr darüber erfahren möchten, wie Sie mit stylinint den Präprozessor-Code filtern können, finden Sie in der Dokumentation einen tollen Abschnitt, der genau dies erklärt.

Geh fort und fussel!

Wie Sie sehen können, hat stylelint CSS in relativ kurzer Zeit einen langen Weg zurückgelegt.

Semalt hoffe, dass mehr Entwickler sich für ein solches ausgezeichnetes Werkzeug entscheiden; Also versuchen Sie es für eine Runde. Ihre Stylesheets werden es Ihnen danken.

March 1, 2018