Die JSX-Syntax der react.js-Bibliothek von Facebook lässt sich gut mit jslint spielen?
Ich bin Herumspielen mit der Facebook - react.js Bibliothek. Ich bin versucht, Ihre JSX-syntax, die beschreibt, erstellen Sie eine Ansicht in der folgenden Weise.
/** @jsx React.DOM */
var HelloMessage = React.createClass({
render: function() {
return <div>{'Hello ' + this.props.name}</div>;
}
});
React.renderComponent(<HelloMessage name="John" />, mountNode);
JSLint offensichtlich nicht wie diese ("erwartet einen Bezeichner und stattdessen sah' <';" - JavaScript-syntax-Fehler), also wie bekomme ich dieses in meine .jshintrc Datei?
InformationsquelleAutor der Frage TYRONEMICHAEL | 2013-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
(update: dieser post ist von 2013 und jetzt veraltet)
Benutze ich JSHint + JSX.
Sollte es nicht erforderlich, einen fork JSHint, sollte es eine Möglichkeit zu sagen, JSHint deaktivieren Sie alle Warnhinweise, die für einen code-block. Leider gibt es keine solche Möglichkeit zum deaktivieren alle Warnungen, nur einen bestimmten Satz von Warnungen, damit ich bis Ende Mai Einreichen, eine pull-Anforderung zum hinzufügen oder ändern von linters. Update: Wir Gaben einen pull-request wurde akzeptiert.
Als Sie bemerkte die workflow-Facebook und Instagram verwenden ist, um Flusen außerhalb der IDE von der Befehlszeile aus.
Ihre andere option ist, um zu extrahieren alle Ihre JSX-templates in eigene Dateien, und machen Sie eine Funktion des Umfangs anstatt des vorhandenen innen eine implizite lexikalische Bereich. Wir probierten es aus und wusste nicht, wie die Menge an boilerplate.
(Ich bin nicht mit dem angeschlossenen Reagieren team)
InformationsquelleAutor der Antwort Dustin Getz
Versuchte ich zu Folgen, Dustin und STRML ist Beratung in diesem thread, und hier ist, was funktioniert am besten für mich.
Entwicklung-Setup -
Verwende ich Sublime Text mit SublimeLinter + SublimeLinter-jshint + SublimeLinter-jsxhint.
Dies sind sehr schöne plugins, lassen Sie mich sehen Fehler, wenn ich die Datei speichern, beide für JS und JSX-Dateien:
Diese plugins Respekt für dein Projekt
.jshintrc
und ich kann nicht empfehlen Ihnen genug.Stellen Sie sicher, Folgen Sie Installationsanweisungen für alle drei Pakete, oder Sie wird nicht funktionieren:
Installieren SublimeLinter ist einfach (Anweisungen);
SublimeLinter-jshint braucht eine Globale
jshint
in Ihrem system (Anweisungen);SublimeLinter-jsxhint braucht eine Globale
jsxhint
in Ihrem system, sowie JavaScript (JSX) bundle innenPackages/JavaScript
(Anweisungen).Können Sie konfigurieren, linter, um ausführen alle paar Sekunden auf "Datei speichern" oder "manuell".
Build-Schritt, Commit-Hook, etc
Sind wir mit JSHint als Teil unserer Git-workflow und als build-Schritt zur Durchsetzung der Richtlinien. Konnten wir verwendet haben jsxhint aber wir wollten uns trotzdem mit grunt-contrib-jshint also das war nicht eine option.
Recht jetzt, wir laufen normal
jshint
als build-Schritt nachreact
transformation, so ist es nur Prozesse, die Ausgabe JS-Dateien.Es wäre cool, wenn jemand-Gabel - grunt-contrib-jshint und machte eine version, die funktioniert mit
jsxhint
aber es sieht nicht wie eine einfache Aufgabe für mich. (Update: jemand genau das Taten aber ich habe es noch nicht getestet.)Ignorieren Verstöße im Generierten Code
JSX-compiler generiert code, der Pausen ein paar unserer Konventionen.
Wollte ich nicht verwenden
ignore:start
undignore:end
wie vorgeschlagen von Dustin denn das würde effektiv deaktivieren alle linting innenrender
Methoden. Es ist eine schlechte Idee, in meinem Buch. Zum Beispiel, ohnerender
Methode von linting macht linter glaube ich nicht, verwenden Sie einige der Bibliotheken und untergeordnete Komponenten, erkläre ich mitrequire
am Anfang der Datei. Deshalb die Notwendigkeit, die Dinge zu ignorieren breitet sich ausrender
Methode, um den rest der Datei, und diese Niederlagen der Zweck derignore:start
komplett.Stattdessen habe ich explizit schmücken jedes
render
- Methode mit drei JSHint-Optionen, die JSX-compiler (derzeit) bricht für mich:Dies ist ausreichend, in meinem Fall; für Ihre
.jshintrc
dies kann einige tuning.InformationsquelleAutor der Antwort Dan Abramov
JsxHint und JSHint nicht die besten tools für linting JSX. JSHint nicht unterstützt JSX und alle JsxHint tut, ist verwandelt JSX und dann läuft JSHint auf den transformierten code.
Ich verwende (und empfehle) ESLint mit der Reagieren plugin. Dies ist besser, da Eslint analysieren können beliebigen Javascript-Geschmack mit benutzerdefinierten Parser wie esprima-fb oder babel-eslint (siehe update unten).
Probe
.eslintrc
Datei:UPDATE
esprima-fb wird bald veraltet durch Facebook. Verwenden babel-eslint als ein parser für eslint. Ein guter Ort, um mehr darüber zu wissen, wie Sie setup-Babel & Eslint arbeiten mit Reagieren ist dieses Github-Projekt.
InformationsquelleAutor der Antwort Amey
Sehen JSXHintein wrapper um JSHint ich schrieb, dass die Fusseln der Ausgabe von
react-tools
. Dies ist ein Schritt aus ignorieren einen block von Zeilen, wie es tatsächlich lint der generierte javascript.Es kann verwendet werden, mit Sublime Text über SublimeLinter mit dieses plugin.
InformationsquelleAutor der Antwort STRML
Jungs Aufrechterhaltung der repo sind unglaublich hilfreich. Sie müssen nur führen Sie es warf die JSX-Transformation Gültiger javascript-es sei denn, jemand erstellt einen fork jshint. Wenn genügend Interesse bestehen, könnte es auf der roadmap für zukünftige Versionen der reagieren Rahmen. Kann sich die coversation thread hier.
InformationsquelleAutor der Antwort TYRONEMICHAEL
Nutze ich grunt + reagieren-tools + jshint zu Fusseln .js-Dateien, erstellt mit reagieren-tools. Die Ausgabe reagieren-tools ist sehr gut über das halten von Ihr Abstand, Einzug, etc, wenn Sie die Konvertierung Ihrer .jsx .js, so gibt es Ihnen, eine genaue Datei zu Fusseln vor.
Setup, install grunt der normale Weg,. Installieren Sie dann die grunt-contrib-watch, reagieren-tools, grunt -, reagieren, und grunt-contrib-jshint.
hier ist ein Beispiel grunt Datei:
In dieser Datei ausgeführt wird "grunt" wird kompiliert .jsx .js und dann Fusseln die .js-Dateien. Sie können ausführen "grunt watch", um führen Sie nach jedem speichern.
Meisten meiner üblichen .jshintrc Einstellungen funktionieren bei der Ausführung auf diese Weise. Ich lief in einige Probleme am Anfang, aber die meisten konnten gelöst werden, indem Sie Veränderungen in Ihr .jsx-Dateien. Exapmle, ich habe "newcap" auf true gesetzt. Wenn ich folgte die Reagieren tutorial Namenskonvention und aktiviert den ersten Buchstaben des tags, warf Sie ein lint-Fehler. Es wurde behoben, indem die unteren Gehäuse des ersten Buchstaben des tags.
Ich habe, um das set "trailing": false, meine .jshintrc. Die daraus resultierende .js-Dateien nachgestellten Leerzeichen, wo es wandelt die tags in Javascript. Ich habe nicht herausgefunden, ob es eine Reaktion-tools-Konfiguration zu ändern. Sie können die Methode verwenden, beschrieben in Dan ' s post, wenn Sie nicht wollen, ändern Sie Ihre .jshintrc.
Neben linting, diesen Prozess auch hilft catch Probleme mit Ihr .jsx .js-Konvertierung.
Den Ausgabe - /Untergang mit diesem Prozess ist, dass Sie nicht Fusseln .jsx-Dateien in den editor. Aber halten Sie ein terminal-Fenster öffnen, können Sie sehen während der Bearbeitung ist ein hilfreicher Ersatz. Ierlichen TMUX mit Vim und Grunzen in verschiedenen Bereichen ist meine bevorzugte Art, dies zu nutzen.
InformationsquelleAutor der Antwort shortpgh
Amey s Antwort ist korrekt, aber auch aktualisiert werden kann, heute:
Paar eslint und eslint-plugin-reagieren jetzt Unterstützung es6+jsx+reagieren, so dass babel-eslint ist nur erforderlich, wenn Sie einige spezielle Sachen wie class-Eigenschaften, Dekorateure, async/await, Typen.
Beispiel .eslintrc Konfiguration reagieren+jsx+es6 ohne babel-eslint:
Können Sie einfach nur Aussehen bei eslint-plugin-reagieren Anweisungen für weitere details/Informationen.
InformationsquelleAutor der Antwort alex_1948511