Wiele projektów, nad którymi pracuję, instaluje eslint jako zależność programistów, z niestandardowym zestawem wtyczek eslint. Obecnie flycheck korzysta z globalnie zainstalowanej wersji eslinta zamiast wersji eslint zainstalowanej z każdym projektem.
Chciałbym zamiast tego wskazać Flycheck na node_modules / eslint / bin / eslint.js. Pełna ścieżka powinna zależeć od ścieżki bieżącego pliku bufora, dzięki czemu mogę pracować nad wieloma projektami jednocześnie z każdym buforem, używając potencjalnie innego pliku wykonywalnego eslint.
czy to możliwe? Wszelkie sugestie dotyczące tego, jak bym to zrobił?
(and eslint (file-executable-p eslint))
napotkać błędy, które w innym przypadku próbuję, tj. Edytować mój plik .emacs"node_modules/.bin/eslint"
Użyłbym ścieżki , na wypadek gdyby eslint kiedykolwiek zmienił strukturę katalogów.Nie mam wystarczającej reputacji, aby skomentować zaakceptowane rozwiązanie. Ale zrobiłem jego odmianę, która działa dobrze z zagnieżdżonymi pakietami (na przykład przy użyciu lerna ). Jest to dokładnie ten sam kod, jednak
node_modules
rekursywnie wyszukuje folder nadrzędny, aż znajdzie plikeslint
binarny i go używa. W ten sposób projekt Lerna może mieć tylko jedną konfigurację eslint, współużytkowaną przez wszystkie paczki.źródło
Jestem w systemie Windows i to nie działało dla mnie, myślę, że plik wykonywalny-p lub może flycheck nie potrafił zlokalizować poprawnego pliku. Gdy działa, wskazuje na
.cmd
plik, a nie na.js
plik.Znalazłem komentarz we flycheck-eslint nie używa wersji eslinta zainstalowanej w projekcie JavaScript i ich wpisu na blogu, aby zamiast tego używać zmiennych katalogowych .
W katalogu głównym projektu utwórz plik
.dir-locals.el
Teraz, kiedy odwiedzam plik javascript,
flycheck-verify-setup
poprawnie go znajduje<dir>/node_modules/.bin/eslint.cmd
źródło
Moje poprzednie rozwiązanie utrudniało pracę nad różnymi projektami.
Zmodyfikowałem przyjętą odpowiedź na głupoty z twardego kodu.
źródło
Oto rozwiązanie, które łączy odpowiedzi Bae i Lunaryorn przy użyciu
dir-locals.el
pliku w katalogu głównym projektu (a dokładniej w katalogu zawierającymnode_modules/
folder, w którym znajduje sięeslint
plik binarny). Utwórz wspomnianydir-locals.el
plik o następującej treści.Tutaj zakładam, że używasz
js2-mode
trybu głównego emacs do edycji plików javascript. Jeśli tak nie jest, zmień odpowiednio tę linię. Drugi wiersz pliku sprawia, żejavascript-eslint
moduł sprawdzania składni jest jedynym, który można zastosować w tym projekcie. Trzeci wiersz ustawia zmiennąflycheck-javascript-eslint-executable
na<root-dir>/node_modules/.bin/eslint
. W ten sposób nie modyfikujemy emacsaexec-path
.źródło
Wypróbowałem kilka różnych odmian tego i nigdy nie znalazłem dokładnie tego, czego chciałem. W końcu osiągnąłem wystarczająco wysoki poziom w seplenieniu Emacsa, aby zmodyfikować go według własnych upodobań. Moja wersja szuka lokalnego eslinta, a jeśli go nie znajdzie, wraca do globalnie zainstalowanego:
źródło