Чего вы пытаетесь достичь?
Поскольку 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))
(пакеты "н / д")
(эльпа "бык-хьюго")))
В ответ на свой вопрос я понял, как запустить 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 Большое спасибо за это!
Самый полезный комментарий
@gueorgui Мне пришлось сделать что-то подобное, чтобы
vue
работало нормально, в итоге получилось следующееВы можете заменить экземпляры
vue
наtsx
, а также удалить поддержкуstylelint
. Здесь также используетсяlsp
, поэтому вам, возможно, придется отрегулировать и это.