Viele Projekte, an denen ich arbeite, installieren eslint als Entwicklungsabhängigkeit mit einem benutzerdefinierten Satz von eslint-Plugins. Momentan verwendet flycheck die global installierte Version von eslint und nicht die Version von eslint, die mit jedem Projekt installiert wird.
Ich möchte Flycheck stattdessen auf node_modules / eslint / bin / eslint.js verweisen lassen. Der vollständige Pfad sollte vom Pfad der aktuellen Pufferdatei abhängen, damit ich mit jedem Puffer, der eine möglicherweise andere ausführbare ESLINT-Datei verwendet, gleichzeitig an mehreren Projekten arbeiten kann.
Ist das möglich? Irgendwelche Vorschläge, wie ich das machen würde?
(and eslint (file-executable-p eslint))
ich beim Versuch, meine .emacs-Datei zu bearbeiten"node_modules/.bin/eslint"
, nur für den Fall, dass eslint jemals ihre Verzeichnisstruktur ändert.Ich habe nicht genug Ansehen, um die akzeptierte Lösung zu kommentieren. Aber ich habe eine Variation davon gemacht, die gut mit verschachtelten Paketen funktioniert (zum Beispiel mit lerna ). Dies ist genau derselbe Code, jedoch wird der übergeordnete
node_modules
Ordner rekursiv durchsucht, bis eineeslint
Binärdatei gefunden und verwendet wird. Auf diese Weise können Sie für ein Lerna-Projekt nur eine Eslint-Konfiguration festlegen, die von allen Unterpaketen gemeinsam genutzt wird.quelle
Ich arbeite unter Windows und das hat bei mir nicht funktioniert. Ich denke, die Datei-ausführbare-p oder die Flycheck-Interna haben die richtige Datei nicht gefunden. Als ob es funktioniert, zeigt es auf die
.cmd
Datei und nicht auf die.js
Datei.Ich fand einen Kommentar in flycheck-eslint verwendet keine Version von eslint, die in JavaScript-Projekten und deren Blog- Posts installiert ist , um stattdessen Verzeichnisvariablen zu verwenden.
Erstellen Sie im Stammverzeichnis des Projekts eine Datei
.dir-locals.el
Wenn ich jetzt die Javascript-Datei besuche
flycheck-verify-setup
, findet die Datei richtig<dir>/node_modules/.bin/eslint.cmd
quelle
Meine bisherige Lösung war ein schmerzhafter Einstieg in verschiedene Projekte.
Ich habe die akzeptierte Antwort geändert, um Dummheiten bei Hardcode-Fenstern Rechnung zu tragen.
quelle
Hier ist eine Lösung, die die Antworten von Bae und Lunaryorn mithilfe einer
dir-locals.el
Datei im Stammverzeichnis des Projekts (oder genauer gesagt im Verzeichnis, das dennode_modules/
Ordner enthält, in dem sich dieeslint
Binärdatei befindet) kombiniert . Erstellen Sie diedir-locals.el
Datei mit dem folgenden Inhalt.Hier gehe ich davon aus, dass Sie den
js2-mode
Emacs Major-Modus verwenden, um Javascript-Dateien zu bearbeiten. Wenn dies nicht der Fall ist, ändern Sie diese Zeile entsprechend. In der zweiten Zeile der Datei wird diejavascript-eslint
Syntaxprüfung als einzige in diesem Projekt verwendet. Die dritte Zeile setzt die Variableflycheck-javascript-eslint-executable
auf<root-dir>/node_modules/.bin/eslint
. Auf diese Weise modifizieren wir keine Emacsexec-path
.quelle
Ich habe ein paar verschiedene Variationen davon ausprobiert und nie genau das gefunden, was ich wollte. In Emacs Lisp habe ich endlich genug Level erreicht, um es nach meinen Wünschen zu ändern. Meine Version sucht nach einer lokalen Eslint und wenn eine nicht gefunden wird, greift sie auf eine global installierte zurück:
quelle