Banyak proyek yang saya kerjakan untuk menginstal eslint sebagai dependensi dev, dengan satu set kustom eslint plugins. Saat ini, flycheck menggunakan versi eslint yang terinstal secara global daripada versi eslint yang dipasang pada setiap proyek.
Saya ingin membuat flycheck point ke node_modules / eslint / bin / eslint.js sebagai gantinya. Path lengkap harus bergantung pada path file buffer saat ini sehingga saya dapat bekerja pada beberapa proyek pada saat yang sama dengan masing-masing buffer menggunakan eslint yang berpotensi berbeda yang dapat dieksekusi.
Apakah ini mungkin? Ada saran untuk bagaimana saya akan melakukan ini?
(and eslint (file-executable-p eslint))
saya mengalami kesalahan jika tidak mencoba, yaitu mengedit file"node_modules/.bin/eslint"
, kalau-kalau eslint pernah mengubah struktur direktori mereka.Saya tidak memiliki reputasi yang cukup untuk mengomentari solusi yang diterima. Tapi saya membuat variasi, yang berfungsi baik dengan paket bersarang (misalnya menggunakan lerna ). Ini adalah kode yang sama persis, namun mencari
node_modules
folder induk secara rekursif sampai menemukaneslint
biner, dan menggunakannya. Dengan cara ini, Anda dapat memiliki proyek lerna hanya memiliki satu konfigurasi eslint, dibagi antara semua sub-paket.sumber
Saya menggunakan windows dan ini tidak berfungsi untuk saya, saya pikir file-executable-p atau mungkin internal flycheck gagal menemukan file yang benar. Seperti ketika bekerja itu menunjuk ke
.cmd
file dan bukan.js
file.Saya menemukan komentar di flycheck-eslint tidak menggunakan versi eslint yang diinstal dalam proyek JavaScript dan posting blog mereka untuk menggunakan variabel direktori sebagai gantinya.
Di direktori root proyek buat file
.dir-locals.el
Sekarang ketika saya mengunjungi file javascript
flycheck-verify-setup
dengan benar menemukan file<dir>/node_modules/.bin/eslint.cmd
sumber
Solusi saya sebelumnya adalah menyusahkan untuk bekerja di berbagai proyek.
Saya telah memodifikasi jawaban yang diterima untuk kebodohan windows kode keras.
sumber
Berikut adalah solusi yang menggabungkan jawaban Bae dan lunaryorn menggunakan
dir-locals.el
file di direktori root proyek (atau, lebih khusus, di direktori yang berisinode_modules/
folder tempateslint
tinggal biner). Buatdir-locals.el
file tersebut dengan konten berikut.Di sini saya berasumsi Anda menggunakan
js2-mode
mode utama emacs untuk mengedit file javascript. Jika bukan itu masalahnya, ubah baris itu sesuai. Baris kedua file membuatjavascript-eslint
pemeriksa sintaks satu-satunya yang digunakan dalam proyek ini. Baris ketiga mengatur variabelflycheck-javascript-eslint-executable
menjadi<root-dir>/node_modules/.bin/eslint
. Dengan cara ini kami tidak mengubah emacs 'exec-path
.sumber
Saya sudah mencoba beberapa variasi berbeda dan tidak pernah menemukan apa yang saya inginkan. Saya akhirnya naik level cukup di Emacs lisp untuk memodifikasinya sesuai dengan keinginan saya. Apa yang dilakukan versi saya adalah mencari eslint lokal dan jika tidak ditemukan, ia akan kembali ke yang diinstal secara global:
sumber