Apa yang ingin Anda capai?
Karena TSLint sudah tidak digunakan lagi dan Eslint sekarang menjadi cara yang direkomendasikan untuk menyaring file Typecript / TSX, saya ingin menyaring file Typecript saya menggunakan Eslint.
Saya sedikit bingung tentang cara mencegah penggunaan Tide untuk linting dan default ke Eslint, bukan untuk file .js.
Apa yang sudah kamu coba?
Saya telah mengkonfigurasi file .eslintrc
untuk menangani Skrip Ketikan dengan benar dengan menginstal paket typescript-eslint
.
Sistem Informasi
((emacs
(versi. "26.3")
(fitur. "PEMBERITAHUAN ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS THREADS")
(build "28 Des 2019")
(buildopts "--enable-locallisppath = / usr / local / share / emacs / site-lisp --infodir = / usr / local / Cellar / emacs-mac / emacs-26.3-z-mac-7.8 / share / info / emacs --prefix = / usr / local / Cellar / emacs-mac / emacs-26.3-z-mac-7.8 --with-mac --enable-mac-app = / usr / local / Cellar / emacs-mac / emacs -26,3-z-mac-7.8 --dengan-gnutls ")
(windowsys. batch)
(daemonp. server-running))
(malapetaka
(versi. "2.0.9")
(build. "HEAD -> kembangkan 453e20534 2020-01-15 11:19:32 -0500")
(dir. "~ / work / dotfiles / emacs / .doom.d /"))
(sistem
(tipe. darwin)
(config. "x86_64-apple-darwin18.7.0")
(shell. "/ usr / local / bin / fish")
(uname. "Darwin 18.7.0 Versi Kernel Darwin 18.7.0: Sel 20 Agustus 16:57:14 PDT 2019; root: xnu-4903.271.2 ~ 2 / RELEASE_X86_64 x86_64")
(jalur "~ / .nvm / versi / node / v12.13.0 / bin" "~ / go / bin" "~ / .bin" "~ / .yarn / bin" "~ / .config / yarn / global / node_modules /.bin "" ~ / .rbenv / bin "" ~ / .rbenv / shims "" / usr / local / bin "" / usr / bin "" / bin "" / usr / sbin "" / sbin "" / usr / local / go / bin "" / usr / local / MacGPG2 / bin "" /Library/Frameworks/Mono.framework/Versions/Current/Commands "" / Library / TeX / texbin "" ~ / go / bin "" ~ / .bin "" ~ / .yarn / bin "" ~ / .config / yarn / global / node_modules / .bin "" ~ / .rbenv / bin "" ~ / .rbenv / shims "" ~ / .rbenv / versi / 2.6.3 / bin "" /usr/local/Cellar/rbenv/1.1.2/libexec "" /usr/local/Cellar/emacs-mac/emacs-26.3-z-mac-7.8/libexec/emacs/ 26.3 / x86_64-apple-darwin18.7.0 "))
(config
(envfile. envvar-file)
(file-elc. 0)
(modul: perusahaan penyelesaian ivy: ui doom doom-dashboard doom-exit hl-todo modeline nav-flash ophints (popup + all + defaults) treemacs unicode vc-gutter vi-tilde-fringe jendela-pilih ruang kerja: editor (jahat + di mana-mana ) file-templates melipat beberapa kursor rotate-text snippet: emacs (dired + icons) electric vc: term vterm: tools editorconfig eval: checkers syntax: tools (lookup + docsets) macos magit pdf: lang common-lisp data emacs-lisp go javascript latex ledger markdown (org + dragndrop + ipython + pandoc + present) plantuml python ruby rust sh web: config literate (default + binding + smartparens))
(paket "n / a")
(elpa "ox-hugo")))
Menindaklanjuti pertanyaan saya sendiri, saya telah menemukan cara menjalankan javascript-eslint
dalam typescript-mode
:
(defun typescript-mode-setup ()
"Custom setup for Typescript mode"
(setq flycheck-checker 'javascript-eslint)
)
(add-hook 'typescript-mode-hook 'typescript-mode-setup)
Masalahnya kemudian menjadi bahwa .tsx
file tidak dibuka di typescript-mode
(karena mode itu tidak mendukung JSX / TSX) melainkan di web-mode
, dan tampaknya javascript-eslint
bukan pemeriksa Flycheck yang valid untuk web-mode
.
Jadi saya terjebak dengan menggunakan typescript-mode
untuk file TSX, kehilangan kesederhanaan penyorotan sintaks dan indentasi untuk bagian JSX, atau saya harus berhenti menggunakan Eslint.
Wawasan apa pun akan sangat dihargai 😄
@gueorgui Saya harus melakukan sesuatu yang serupa untuk vue
untuk bekerja dengan baik, berakhir dengan yang berikut ini
(define-derived-mode vue-mode web-mode "Vue mode")
(add-to-list 'auto-mode-alist '("\\.vue\\'" . vue-mode))
(after! flycheck
(flycheck-add-mode 'javascript-eslint 'vue-mode)
(flycheck-add-mode 'css-stylelint 'vue-mode)
(add-hook 'vue-mode-hook (lambda () (flycheck-add-next-checker 'lsp-ui 'javascript-eslint)))
(add-hook 'vue-mode-hook (lambda () (flycheck-add-next-checker 'javascript-eslint 'css-stylelint))))
Anda dapat mengganti contoh vue
dengan tsx
, dan menghapus dukungan stylelint
juga. Ini juga menggunakan lsp
, jadi Anda mungkin perlu menyesuaikannya juga.
@afontaine Terima kasih banyak untuk ini!
Komentar yang paling membantu
@gueorgui Saya harus melakukan sesuatu yang serupa untuk
vue
untuk bekerja dengan baik, berakhir dengan yang berikut iniAnda dapat mengganti contoh
vue
dengantsx
, dan menghapus dukunganstylelint
juga. Ini juga menggunakanlsp
, jadi Anda mungkin perlu menyesuaikannya juga.