De nombreux projets sur lesquels je travaille installent eslint en tant que dépendance de développement, avec un ensemble personnalisé de plugins eslint. À l'heure actuelle, flycheck utilise la version globalement installée d'eslint plutôt que la version d'eslint installée avec chaque projet.
Je voudrais plutôt faire en sorte que flycheck pointe vers node_modules / eslint / bin / eslint.js. Le chemin complet doit dépendre du chemin du fichier du tampon actuel afin que je puisse travailler sur plusieurs projets en même temps avec chaque tampon en utilisant un exécutable eslint potentiellement différent.
Est-ce possible? Avez-vous des suggestions sur la façon de procéder?
(and eslint (file-executable-p eslint))
je rencontre des erreurs dans le cas contraire, c'est-à-dire que je modifie mon fichier .emacs"node_modules/.bin/eslint"
, juste au cas où eslint changerait jamais sa structure de répertoire.Je n'ai pas assez de réputation pour commenter la solution acceptée. Mais j'en ai fait une variante, qui fonctionne bien avec les paquets imbriqués (par exemple en utilisant lerna ). Il s'agit du même code, mais il recherche le
node_modules
dossier parent de manière récursive jusqu'à ce qu'il trouve uneslint
binaire et l'utilise. De cette façon, un projet lerna peut avoir une seule configuration eslint, partagée entre tous les sous-packages.la source
Je suis sur Windows et cela ne fonctionnait pas pour moi, je pense que le fichier-exécutable-p ou peut-être que les internes du contrôle de vol ne parvenaient pas à localiser le fichier correct. Comme lorsqu'il fonctionne, il pointe vers le
.cmd
fichier et non vers le.js
fichier.J'ai trouvé un commentaire dans flycheck-eslint n'utilise pas la version d'eslint installée dans le projet JavaScript et leur blog pour utiliser des variables de répertoire à la place.
Dans le répertoire racine du projet, créez un fichier
.dir-locals.el
Maintenant, lorsque je visite le fichier javascript, il
flycheck-verify-setup
trouve correctement le fichier<dir>/node_modules/.bin/eslint.cmd
la source
Ma solution précédente était difficile de travailler sur différents projets.
J'ai modifié la réponse acceptée aux stupidités des fenêtres de code en dur.
la source
Voici une solution qui combine les réponses de Bae et de lunaryorn en utilisant un
dir-locals.el
fichier dans le répertoire racine du projet (ou, plus précisément, dans le répertoire qui contient lenode_modules/
dossier où réside leeslint
binaire). Créez leditdir-locals.el
fichier avec le contenu suivant.Ici, je suppose que vous utilisez le
js2-mode
mode principal emacs pour modifier les fichiers javascript. Si ce n'est pas le cas, modifiez cette ligne en conséquence. La deuxième ligne du fichier fait dujavascript-eslint
vérificateur de syntaxe le seul à être utilisé dans ce projet. La troisième ligne définit la variableflycheck-javascript-eslint-executable
sur<root-dir>/node_modules/.bin/eslint
. De cette façon, nous ne modifions pas emacs 'exec-path
.la source
J'ai essayé plusieurs variantes de cela et je n'ai jamais trouvé exactement ce que je voulais. J'ai finalement suffisamment progressé dans Emacs lisp pour le modifier à mon goût. Ce que ma version fait, c'est chercher un eslint local et si un n'est pas trouvé, il revient à un installé mondialement:
la source