Es ist wirklich schön, eine ganze Codebasis zu haben, die perfekt mit einer Reihe von Code-Stilrichtlinien übereinstimmt. Alle Dateien verwenden die gleiche Einrückung, den gleichen Anführungsstil, die gleichen Abstands- und Zeilenumbruchregeln, sogar kleine Dinge wie die Art und Weise, wie Nullen in Werten behandelt werden und wie Keyframes benannt werden.
Es scheint eine gewaltige Aufgabe zu sein, aber heutzutage ist es einfacher denn je. Es scheint mir, dass es zu einem Zwei-Werkzeug-Spiel geworden ist
- Ein Werkzeug, um leicht zu behebende Probleme automatisch zu beheben
- Ein Werkzeug, um vor schwerer zu behebenden Problemen zu warnen
Die halbe Miete: Prettier
Auch bekannt als „Korrigiere die Dinge für mich, bitte“.
Nach meinem besten Wissen ist Prettier ein ziemlich neues Projekt, das erst im Januar 2017 auf den Markt kam. Jetzt, im letzten Quartal 2017, scheint es, dass es von jedem und seiner Cousine benutzt wird. Sie nennen es einen Meinungsstarken Code-Formatierer.
Die große Idee: Beim Speichern eines Dokuments geschieht automatisch eine ganze Menge Codeformatierung. Das ist ein glorreicher Anblick. Einrückung und Abstände werden korrigiert. Anführungszeichen werden konsistent gemacht. Semikolons werden hinzugefügt.

Führen Sie Prettier einmal über Ihre Codebasis und vorbei sind die schlammigen Commits voller Codeformatierungs-Kram. (Sie könnten erwägen, einen temporären Git-Benutzer anzulegen, damit ein Benutzer nicht den Eindruck erweckt, eine Unmenge von Codezeilen mehr committet zu haben als ein anderer, wenn Ihnen das wichtig ist.) Allein das ist ein verdammt schöner Vorteil. Es erleichtert die Durchsicht von Commits erheblich und spart eine Menge mühsame Arbeit.
Wie dieser Beitrag andeutet, ist Prettier aber nur die halbe Miete. Sie werden feststellen, dass Prettier nur eine Handvoll Optionen unterstützt. Tatsächlich bin ich mir ziemlich sicher, dass es bei seiner Veröffentlichung überhaupt keine Konfiguration hatte. Meinungsstark, in der Tat.
Was es unterstützt, sind Dinge, die leicht zu beheben sind und keiner menschlichen Gehirnleistung bedürfen. Verwenden Sie versehentlich doppelte Anführungszeichen (uggkch Muskelgedächtnis), wenn Ihr Styleguide einfache Anführungszeichen vorsieht? Boom – geändert beim Speichern.
Es gibt andere potenzielle Probleme, die nicht so einfach zu beheben sind. Zum Beispiel haben Sie einen ungültigen #HEX-Code verwendet. Wahrscheinlich möchten Sie nicht, dass ein Computer rät, was Sie damit gemeint haben. Das ist besser, als es einfach als Fehler visuell markiert zu bekommen, damit Sie es beheben können.
Hier kommt der nächste Teil ins Spiel.
Die andere Hälfte der Miete: Stylelint
Auch bekannt als „Lass mich über Probleme wissen, damit ich sie beheben kann“.
Stylelint ist genau das. Tatsächlich haben Sie in dem obigen GIF, das zeigt, wie Prettier seine Arbeit macht, rote Punkte und rote Umrandungen in meinem Sublime Text-Editor gesehen. Das war nicht Prettier, das mir zeigte, was es beheben würde (Prettier zeigt keine Fehler an, es behebt einfach, was es kann). Das war Stylelint, das sein Linting durchführte und mir diese Fehler anzeigte.
Während Prettier etwa 10 Regeln unterstützt, unterstützt Stylelint etwa 150. Es gibt eine Standardkonfiguration, aber Sie können auch so fein granular wie gewünscht vorgehen und konfigurieren, wie Sie möchten. David Clark hat letztes Jahr hier auf CSS-Tricks darüber geschrieben.

Mit diesen Warnungen, die so klar sichtbar sind, können Sie sie schnell von Hand beheben. Es wird ziemlich zur zweiten Natur.
Alles zum Laufen bringen
Diese Werkzeuge funktionieren in einer Vielzahl von Code-Editoren.

Es ist sehr leicht zu denken „Ich installiere das einfach in meinen Code-Editor, und es funktioniert!“ Das passiert mir jedes Mal. Diese Werkzeuge zum Laufen zu bringen, ist wieder ein zweiteiliges Spiel.
- Code-Editor-Plugin installieren.
- Die npm / yarn Installationssachen erledigen. Das sind Node-basierte Werkzeuge. Das bedeutet nicht, dass Ihr Projekt in der Produktion etwas mit Node zu tun haben muss, dies ist eine lokale Entwicklung Abhängigkeit.
Dies sind bewusst getrennte Dinge. Der Kern dieser Werkzeuge ist der Code, der Ihren Code parst und die Probleme identifiziert, die er beheben wird. Das geschieht über APIs, die andere Werkzeuge aufrufen können. Das bedeutet, dass diese Werkzeuge nicht neu geschrieben und für die Arbeit in einer neuen Umgebung portiert werden müssen, stattdessen ruft diese neue Umgebung dieselben APIs auf wie alle anderen und tut, was sie mit den Ergebnissen tun muss.

Oben ist ein einfaches Projekt in Sublime Text mit installierten Prettier und Stylelint. Beachten Sie, dass `package.json` zeigt, dass wir unsere Werkzeuge installiert haben, und ich liste meine „Pakete“ auf, damit Sie sehen können, dass ich das Sublime Text Plugin jsPrettier installiert habe. Sie können dort auch die Dotfiles sehen, die die Regeln für beide Werkzeuge konfigurieren.
Lassen Sie sich nicht vom „js“-Teil irreführen. Sie könnten dieses Setup auf dem CSS Ihrer WordPress-Site verwenden. Es spielt wirklich keine Rolle, was Ihr Projekt ist.
Extravaganter werden
Hier gibt es sicherlich einige Verbesserungen, die vorgenommen werden können. Zum Beispiel
- Sie könnten erwägen, Stylelint so zu konfigurieren, dass Probleme ignoriert werden, die Prettier behebt. Sie werden ohnehin behoben, warum also die Fehler anzeigen.
- Sie könnten erwägen, Ihren Deployment-Prozess zu aktualisieren, um anzuhalten, wenn Stylelint-Probleme gefunden werden. Manchmal zeigt Stylelint einen Fehler an, der buchstäblich ein Problem verursachen wird, daher sollte er wirklich nicht in die Produktion gelangen.
- Wir haben hier meist über CSS gesprochen, aber JavaScript ist wohl noch wichtiger zum Linting (und Prettier unterstützt es auch). ES Lint ist wahrscheinlich der richtige Weg hier. Es gibt auch Werkzeuge wie Rubocop für Ruby, und ich bin sicher, es gibt Linter für fast jede erdenkliche Sprache.
Verwandt
- Stylelint Co-Creator David Clark stellt Stylelint vor
- Ashley Nolan über Stylelint, mit einigen interessanten historischen Daten
- Stoyan Stefanov über die Integration von Stylelint und TextMate
- Erzwingen des CSS-Syntaxstils
- Artem Sapegin über Warum Roboter unseren Code für uns formatieren sollten
- Das Kapitel von SurviveJS über Code-Formatierung.
- Mrm: Kommandozeilen-Tool, das Ihnen hilft, die Konfiguration Ihrer Open-Source-Projekte synchron zu halten
Hat jemand Tipps, wie das in Visual Studio 2015 funktioniert? Ich sehe das Kontextmenü in JS-Dateien, aber nicht in CSS/SASS-Dateien.
Die Visual Studio-Erweiterung ist eine Drittanbieter-Erweiterung von Mads Kristensen, der auch für die Web Essentials-Familie von VS-Plugins verantwortlich ist. Soweit ich weiß, unterstützt sie nur die Verwendung von Prettier zur Formatierung von JS.
Sie können auch stylefmt mit stylelint anstelle von Prettier verwenden, da es CSS auf die gleiche Weise formatiert, wie stylelint es erwartet. Und es befolgt die gleichen Regeln.
Das ist eine großartige Sichtweise! In den letzten Monaten hat das Stylelint-Team darüber nachgedacht.
Um den Leuten zu helfen, zu identifizieren, welche Stylelint-Regeln diese schwerer zu behebenden Probleme erkennen, haben wir die große Liste von Regeln kürzlich in drei Kategorien unterteilt.
Mögliche Fehler.
Sprachfunktionen einschränken.
Stilistische Probleme.
Die Regeln für „mögliche Fehler“ umfassen diejenigen, die Folgendes erkennen:
Duplikate z.B.
no-duplicate-selectorsunddeclaration-block-no-duplicate-propertiesusw.Überschreibungen z.B.
declaration-block-no-shorthand-property-overridesundno-descending-specificityusw.Ungültige Standard-CSS-Syntax z.B.
color-no-invalid-hexundkeyframe-declaration-no-importantusw.Die Regeln für „Sprachfunktionen einschränken“ können verwendet werden, um:
Bestimmte Werte, Einheiten, At-Regeln und Operatoren verbieten z.B.
declaration-property-value-whitelist,unit-whitelist,at-rule-blacklistundselector-attribute-operator-whitelistusw.Die Spezifität und Menge von Selektoren begrenzen z.B.
selector-max-specificity,selector-max-class,selector-max-combinatorsusw.Muster für Selektoren und benutzerdefinierte Eigenschaften erzwingen z.B.
selector-class-pattern,selector-id-patternundcustom-property-patternusw.Wie Sie sehen können, erkennen die Regeln in diesen beiden Kategorien die schwerer zu behebenden Probleme, die menschliche Gehirnleistung zum Lösen erfordern.
Wir haben kürzlich eine
--fixOption zu Stylelint hinzugefügt und rollen diese derzeit über Stylelint's stilistische Regeln aus. Das bedeutet, dass Stylelint viele der leicht zu behebenden Probleme, die keine menschliche Gehirnleistung erfordern, automatisch beheben kann (oder bald kann). (Achten Sie auf das Label „(Autofixable)“ in der Liste der Regeln, um zu sehen, was bereits unterstützt wird, und schauen Sie in die CHANGELOG, um zu sehen, was bald verfügbar sein wird.)Wir sind große Fans von Prettier bei Stylelint und wir verwenden Prettier, um den gesamten JavaScript-Code von Stylelint zu formatieren. Es erfüllt unsere Formatierungsbedürfnisse, besonders wenn die Länge von Zeilen begrenzt wird. Wir fügen Stylelint Unterstützung für
--fixhinzu, da sich Stylelint und Prettier in ihren Formatierungsanwendungsfällen leicht unterscheiden. Stylelint ist nicht meinungsstark und kann so konfiguriert werden, dass eine sehr vielfältige Palette von Stilkonventionen unterstützt wird. Die Reihenfolge der Eigenschaften ist ein gutes Beispiel dafür, wo es keine ein oder zwei dominanten Konventionen gibt. Das Stylelint-Order-Plugin (das die Option--fixunterstützt) ist sehr konfigurierbar und kann verwendet werden, um eine Reihe von Reihenfolge-Konventionen zu linten und zu beheben.Stylelint ist (wie im Artikel erwähnt) gut darin, vor schwerer zu behebenden Problemen zu warnen. Es kann nun, ähnlich wie Prettier, auch einige der leicht zu behebenden Probleme automatisch beheben.
Benutzer können zu den Werkzeugen greifen, die ihren spezifischen Formatierungsbedürfnissen am besten entsprechen. Das kann bedeuten, dass sowohl Stylelint als auch Prettier für die Formatierung verwendet werden. Zum Beispiel könnten Sie das Stylelint-Order-Plugin verwenden, um die Reihenfolge Ihrer Eigenschaften automatisch zu formatieren, und dann Prettier das Stylesheet basierend auf der Zeilenlänge formatieren lassen. Ebenso können Sie Stylelint verwenden, um die Anzahl der Leerzeilen (mit den Regeln
*-empty-line-before) zu formatieren, bevor Sie den Rest der Formatierung an Prettier übergeben. Oder Sie können Prettier zuerst ausführen und dann die Formatierung mit Stylelint anpassen – es gibt tatsächlich ein spezielles Werkzeug namens prettier-stylelint, das dabei helfen kann.Wir haben kürzlich eine neue Konfiguration namens
stylelint-config-recommendedveröffentlicht. Diese Konfiguration aktiviert nur die Regeln für „mögliche Fehler“ und ist ein idealer Ausgangspunkt, wenn Sie Stylelint zusammen mit Prettier (oder einem anderen CSS-Formatter) verwenden möchten. Die im Artikel erwähnte Standardkonfiguration baut auf der empfohlenen Konfiguration auf und aktiviert über 60 stilistische Regeln mit sinnvollen Standardwerten. Dies ist eine ideale Konfiguration, wenn Sie die--fixOption von Stylelint verwenden möchten (oder wenn Sie Ihren Code gerne von Hand formatieren).Bei Verwendung einer der beiden Konfigurationen empfehlen wir, einige der Regeln, die Sprachfunktionen einschränken, hinzuzufügen (und sie an Ihre spezifischen Bedürfnisse anzupassen), da diese Regeln wirklich dazu beitragen können, mehr Konsistenz in einer CSS-Codebasis zu schaffen!
Ist das ähnlich wie Brackets' Beautify?
Gute Zeit, wir wollen Prettier in unser Projekt integrieren, wir haben bereits Stylelint
Als Maintainer von CSSComb muss ich es als Alternative empfehlen :)
Schauen Sie https://github.com/hugomrdias/prettier-stylelint, um Prettier und Stylelint einfach zu integrieren.
Ich hoffe, es kann Ihnen helfen
Habe das für mich gebaut, um einige Dinge zu korrigieren, die mir am Prettier-Output nicht gefallen haben und die Stylelint beheben konnte.
Stylelint portiert Stylefmt-Fixes, so dass es mit der Zeit noch mehr beheben kann.
prettier-stylelint enthält auch eine Stylelint-Konfiguration, um widersprüchliche Regeln zu deaktivieren, und eine Integration mit der VSCode Prettier-Erweiterung.
Hat jemand sowohl Stylelint als auch Sass-Lint ausprobiert? Ich war ziemlich zufrieden mit Sass-Lint, aber ich bin daran interessiert, die Vorteile von Stylelint im Vergleich dazu zu erfahren.