Doom-emacs: Как использовать Eslint для проверки файлов .ts / .tsx вместо tsx-tide

Созданный на 21 янв. 2020  ·  3Комментарии  ·  Источник: hlissner/doom-emacs

Чего вы пытаетесь достичь?
Поскольку TSLint устарел и теперь рекомендуется использовать Eslint для линтинга файлов Typescript / TSX, я хотел бы линтовать мои файлы Typescript с помощью Eslint.

Я немного не понимаю, как предотвратить использование Tide для линтинга и по умолчанию использовать Eslint, как для файлов .js.

Что ты пробовал?
Я настроил свой файл .eslintrc для правильной обработки Typescript, установив пакет typescript-eslint .

Системная информация


((emacs
(версия. "26.3")
(особенности. "УВЕДОМЛЕНИЕ ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS THREADS")
(сборка «28 дек, 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.)
(демон. запущен на сервере))
(рок
(версия. "2.0.9")
(сборка "ГОЛОВА -> разработка 453e20534 2020-01-15 11:19:32 -0500")
(каталог "~ / work / dotfiles / emacs / .doom.d /"))
(система
(тип. дарвин)
(конфигурация "x86_64-apple-darwin18.7.0")
(оболочка. "/ usr / local / bin / fish")
(uname. "Darwin 18.7.0 Darwin Kernel Version 18.7.0: Вт 20 августа 16:57:14 PDT 2019; root: xnu-4903.271.2 ~ 2 / RELEASE_X86_64 x86_64")
(путь "~ / .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 / версии / 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 "))
(конфигурация
(envfile. envvar-файл)
(elc-файлы. 0)
(модули: завершение компании ivy: ui doom doom-dashboard doom-quit hl-todo modeline nav-flash ophints (popup + all + defaults) treemacs unicode vc-gutter vi-tilde-fringe window-select workspaces: editor (evil + везде) ) шаблоны файлов свернуть несколько курсоров повернуть текст фрагменты: emacs (dired + icons) electric vc: term vterm: tools editorconfig eval: синтаксис проверки: tools (lookup + docsets) macos magit pdf: lang common-lisp data emacs-lisp перейти javascript latex ledger markdown (org + dragndrop + ipython + pandoc + present) plantuml python ruby ​​rust sh web: config literate (по умолчанию + привязки + smartparens))
(пакеты "н / д")
(эльпа "бык-хьюго")))

:checkers syntax :lang javascript question resolved

Самый полезный комментарий

@gueorgui Мне пришлось сделать что-то подобное, чтобы vue работало нормально, в итоге получилось следующее

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

Вы можете заменить экземпляры vue на tsx , а также удалить поддержку stylelint . Здесь также используется lsp , поэтому вам, возможно, придется отрегулировать и это.

Все 3 Комментарий

В ответ на свой вопрос я понял, как запустить javascript-eslint в typescript-mode :

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

Тогда проблема заключается в том, что файлы .tsx открываются не в typescript-mode (поскольку этот режим не поддерживает JSX / TSX), а в web-mode , и оказывается, что javascript-eslint не является действительным средством проверки Flycheck для web-mode .

Таким образом, я застрял либо в использовании typescript-mode для файлов TSX, теряя тонкости подсветки синтаксиса и отступов для части JSX, либо я должен отказаться от использования Eslint.

Приветствуется любое понимание 😄

@gueorgui Мне пришлось сделать что-то подобное, чтобы vue работало нормально, в итоге получилось следующее

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

Вы можете заменить экземпляры vue на tsx , а также удалить поддержку stylelint . Здесь также используется lsp , поэтому вам, возможно, придется отрегулировать и это.

@afontaine Большое спасибо за это!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги