Многие проекты, над которыми я работаю, устанавливают eslint как dev-зависимость с пользовательским набором плагинов eslint. Прямо сейчас flycheck использует глобально установленную версию eslint, а не версию eslint, установленную с каждым проектом.
Я бы хотел, чтобы flycheck указывал на node_modules / eslint / bin / eslint.js. Полный путь должен зависеть от пути к файлу текущего буфера, поэтому я могу работать над несколькими проектами одновременно с каждым буфером, используя потенциально разные исполняемые файлы eslint.
Это возможно? Любые предложения о том, как я буду делать это?
(and eslint (file-executable-p eslint))
я столкнулся с ошибками, в противном случае я пытался отредактировать мой файл .emacs"node_modules/.bin/eslint"
, на всякий случай, если eslint когда-либо изменит свою структуру каталогов.У меня недостаточно репутации, чтобы комментировать принятое решение. Но я сделал вариант, который хорошо работает с вложенными пакетами (например, с использованием lerna ). Это точно такой же код, однако он
node_modules
рекурсивно ищет родительскую папку, пока не находитeslint
двоичный файл и не использует его. Таким образом, у проекта lerna может быть только одна конфигурация eslint, совместно используемая всеми подпакетами.источник
Я нахожусь на Windows, и это не работало для меня, я думаю, что file-исполняемый-p или, возможно, внутренности flycheck не смогли найти правильный файл. Когда он работает, он указывает на
.cmd
файл, а не на.js
файл.Я нашел комментарий в flycheck-eslint не использует версию eslint , установленной в проекте JavaScript и их блоге на использование переменных каталогов вместо.
В корневой директории проекта создайте файл
.dir-locals.el
Теперь, когда я захожу в файл javascript,
flycheck-verify-setup
правильно находит файл<dir>/node_modules/.bin/eslint.cmd
источник
Моим предыдущим решением было мучительно работать с разными проектами.
Я изменил принятый ответ на глупости окон с жестким кодом.
источник
Вот решение, которое объединяет ответы Bae и lunaryorn, используя
dir-locals.el
файл в корневом каталоге проекта (или, более конкретно, в каталоге, в котором находитсяnode_modules/
папка, в которой находитсяeslint
двоичный файл). Создайте указанныйdir-locals.el
файл со следующим содержанием.Здесь я предполагаю, что вы используете
js2-mode
основной режим emacs для редактирования файлов javascript. Если это не так, измените эту строку соответственно. Вторая строка файла делаетjavascript-eslint
проверку синтаксиса единственной, которая будет использоваться в этом проекте. Третья строка устанавливает переменнуюflycheck-javascript-eslint-executable
в<root-dir>/node_modules/.bin/eslint
. Таким образом, мы не модифицируем emacsexec-path
.источник
Я попробовал несколько разных вариантов этого и так и не нашел именно то, что хотел. Я наконец-то выровнялся в Emacs lisp, чтобы изменить его по своему вкусу. Моя версия ищет локальный eslint, и если он не найден, он возвращается к глобально установленному:
источник