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")))
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!
Comentários muito úteis
@gueorgui Eu tive que fazer algo semelhante para
vue
funcionar bem, acabou com o seguinteVocê pode substituir as instâncias de
vue
portsx
e remover o suporte destylelint
também. Isso também usalsp
, então talvez você precise ajustar para isso também.