En muchos proyectos en los que trabajo instalo eslint como dependencia de desarrollo, con un conjunto personalizado de complementos de eslint. En este momento, flycheck usa la versión de eslint instalada globalmente en lugar de la versión de eslint instalada con cada proyecto.
Me gustaría hacer que flycheck apunte a node_modules / eslint / bin / eslint.js en su lugar. La ruta completa debe depender de la ruta del archivo del búfer actual para que pueda trabajar en varios proyectos al mismo tiempo con cada búfer utilizando un ejecutable eslint potencialmente diferente.
es posible? ¿Alguna sugerencia sobre cómo haría para hacer esto?
(and eslint (file-executable-p eslint))
me encontrase con errores que, de lo contrario, intentaría, es decir, edite mi archivo .emacs"node_modules/.bin/eslint"
Usaría la ruta , en caso de que eslint cambie su estructura de directorios.No tengo suficiente reputación para comentar sobre la solución aceptada. Pero hice una variación, que funciona bien con paquetes anidados (por ejemplo, usando lerna ). Este es exactamente el mismo código, sin embargo, busca la
node_modules
carpeta principal de forma recursiva hasta que encuentra uneslint
binario y lo usa. De esta manera, puede hacer que un proyecto lerna tenga una sola configuración de eslint, compartida entre todos los subpaquetes.fuente
Estoy en Windows y esto no estaba funcionando para mí, creo que el archivo ejecutable-p o tal vez las partes internas de flycheck no pudieron localizar el archivo correcto. Como cuando funciona, apunta al
.cmd
archivo y no al.js
archivo.Encontré un comentario en flycheck-eslint que no usa la versión de eslint instalada en el proyecto JavaScript y su publicación de blog para usar variables de directorio .
En el directorio raíz del proyecto, cree un archivo
.dir-locals.el
Ahora cuando visito el archivo javascript
flycheck-verify-setup
encuentra correctamente el archivo<dir>/node_modules/.bin/eslint.cmd
fuente
Mi solución anterior fue difícil trabajar en diferentes proyectos.
He modificado la respuesta aceptada a las estupideces de Windows de código duro.
fuente
Aquí hay una solución que combina las respuestas de Bae y lunaryorn usando un
dir-locals.el
archivo en el directorio raíz del proyecto (o, más específicamente, en el directorio que contiene lanode_modules/
carpeta dondeeslint
vive el binario). Cree dichodir-locals.el
archivo con el siguiente contenido.Aquí supongo que está utilizando el
js2-mode
modo principal de emacs para editar archivos javascript. Si ese no es el caso, cambie esa línea en consecuencia. La segunda línea del archivo hace que eljavascript-eslint
verificador de sintaxis sea el único que se utilizará en este proyecto. La tercera línea establece la variableflycheck-javascript-eslint-executable
en<root-dir>/node_modules/.bin/eslint
. De esta manera no modificamos emacs 'exec-path
.fuente
He intentado algunas variaciones diferentes de esto y nunca encontré exactamente lo que quería. Finalmente he subido lo suficiente en Emacs lisp para modificarlo a mi gusto. Lo que hace mi versión es buscar un eslint local y, si no se encuentra, recurre a uno instalado globalmente:
fuente