Muitos projetos em que trabalho instalam o eslint como uma dependência de desenvolvedor, com um conjunto personalizado de plugins eslint. No momento, o flycheck usa a versão do eslint instalada globalmente, em vez da versão do eslint instalada em cada projeto.
Gostaria de fazer o flycheck apontar para node_modules / eslint / bin / eslint.js. O caminho completo deve depender do caminho do arquivo do buffer atual, para que eu possa trabalhar em vários projetos ao mesmo tempo com cada buffer usando um executável eslint potencialmente diferente.
Isso é possível? Alguma sugestão de como eu faria isso?
(and eslint (file-executable-p eslint))
que eu estava encontrando erros de outra forma tentando, ou seja, editar meu .emacs arquivo"node_modules/.bin/eslint"
, para o caso de o eslint mudar sua estrutura de diretórios.Não tenho reputação suficiente para comentar sobre a solução aceita. Mas fiz uma variação, que funciona bem com pacotes aninhados (por exemplo, usando lerna ). Esse é exatamente o mesmo código, no entanto, ele pesquisa a
node_modules
pasta pai recursivamente até encontrar umeslint
binário e o usa. Dessa forma, você pode ter um projeto lerna com apenas uma configuração eslint, compartilhada entre todos os subpacotes.fonte
Estou no Windows e isso não estava funcionando para mim, acho que o arquivo executável-p ou talvez os internos do flycheck não conseguiram localizar o arquivo correto. Como quando está funcionando, está apontando para o
.cmd
arquivo e não para o.js
arquivo.Eu encontrei um comentário no flycheck-eslint não usa a versão do eslint instalada no projeto JavaScript e sua postagem no blog para usar variáveis de diretório .
No diretório raiz do projeto, crie um arquivo
.dir-locals.el
Agora, quando visito o arquivo javascript, ele
flycheck-verify-setup
encontra corretamente o arquivo<dir>/node_modules/.bin/eslint.cmd
fonte
Minha solução anterior foi uma dor para trabalhar em diferentes projetos.
Modifiquei a resposta aceita para estupidez do Windows de código rígido.
fonte
Aqui está uma solução que combina as respostas de Bae e lunaryorn usando um
dir-locals.el
arquivo no diretório raiz do projeto (ou, mais especificamente, no diretório que contém anode_modules/
pasta em que oeslint
binário mora). Crie o referidodir-locals.el
arquivo com o seguinte conteúdo.Aqui, suponho que você esteja usando o
js2-mode
modo principal do emacs para editar arquivos javascript. Se não for esse o caso, altere essa linha de acordo. A segunda linha do arquivo torna ojavascript-eslint
verificador de sintaxe o único a ser usado neste projeto. A terceira linha define a variávelflycheck-javascript-eslint-executable
como<root-dir>/node_modules/.bin/eslint
. Dessa forma, não modificamos o emacs 'exec-path
.fonte
Eu tentei algumas variações diferentes disso e nunca encontrei exatamente o que queria. Finalmente subi de nível o suficiente no Emacs lisp para modificá-lo ao meu gosto. O que minha versão faz é procurar por um eslint local e, se não for encontrado, ele volta a um instalado globalmente:
fonte