Doom-emacs: Como faço para usar o Eslint para verificar arquivos .ts / .tsx em vez de tsx-tide

Criado em 21 jan. 2020  ·  3Comentários  ·  Fonte: hlissner/doom-emacs

O que você está tentando alcançar?
Como o TSLint foi preterido e o Eslint agora é a maneira recomendada de lintar arquivos Typescript / TSX, gostaria de lintar meus arquivos Typescript usando Eslint.

Não sei como evitar o uso do Tide para linting e usar o padrão Eslint em vez de arquivos .js.

O que você tentou?
Eu configurei meu arquivo .eslintrc para manipular corretamente o Typescript instalando o pacote typescript-eslint .

Informação do sistema


((emacs
(versão. "26.3")
(recursos. "NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS THREADS")
(compilação "28 de dezembro de 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 --with-gnutls ")
(windowsys. batch)
(daemonp. servidor em execução))
(ruína
(versão. "2.0.9")
(construir. "HEAD -> desenvolver 453e20534 2020-01-15 11:19:32 -0500")
(dir. "~ / work / dotfiles / emacs / .doom.d /"))
(sistema
(digite darwin)
(config. "x86_64-apple-darwin18.7.0")
(shell. "/ usr / local / bin / fish")
(uname. "Darwin 18.7.0 Darwin Kernel Versão 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root: xnu-4903.271.2 ~ 2 / RELEASE_X86_64 x86_64")
(caminho "~ / .nvm / versions / 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 / versões / 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)
(arquivos elc. 0)
(módulos: conclusão company ivy: ui doom doom-dashboard doom-quit hl-todo modeline nav-flash ophints (pop-up + todos + padrões) treemacs unicode vc-gutter vi-tilde-fringe window-select workspaces: editor (evil + todo lugar ) modelos de arquivo dobrar vários cursores girar texto snippets: emacs (dired + ícones) elétrico vc: term vterm: ferramentas editorconfig eval: checkers sintaxe: ferramentas (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 + bindings + smartparens))
(pacotes "n / a")
(elpa "ox-hugo")))

:checkers syntax :lang javascript question resolved

Comentários muito úteis

@gueorgui Eu tive que fazer algo semelhante para vue funcionar bem, acabou com o seguinte

(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))))

Você pode substituir as instâncias de vue por tsx e remover o suporte de stylelint também. Isso também usa lsp , então talvez você precise ajustar para isso também.

Todos 3 comentários

Seguindo minha própria pergunta, descobri como executar javascript-eslint em typescript-mode :

(defun typescript-mode-setup ()
  "Custom setup for Typescript mode"
  (setq flycheck-checker 'javascript-eslint)
  )
(add-hook 'typescript-mode-hook 'typescript-mode-setup)

O problema então é que .tsx arquivos não são abertos em typescript-mode (já que esse modo não suporta JSX / TSX), mas sim em web-mode , e parece que javascript-eslint não é um verificador Flycheck válido para web-mode .

Portanto, estou preso em usar typescript-mode para arquivos TSX, perdendo as sutilezas de realce de sintaxe e recuo para a parte JSX, ou tenho que desistir de usar Eslint.

Qualquer ideia seria muito apreciada 😄

@gueorgui Eu tive que fazer algo semelhante para vue funcionar bem, acabou com o seguinte

(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))))

Você pode substituir as instâncias de vue por tsx e remover o suporte de stylelint também. Isso também usa lsp , então talvez você precise ajustar para isso também.

@afontaine Muito obrigado por isso!

Esta página foi útil?
0 / 5 - 0 avaliações