Помощь в настройке RuboCop, ESLint и других инструментов в VSCode и командной строке

Я устал отправлять код, который не проходит линтинг. Иногда я могу скопировать и вставить команды rubocop или yarn eslint (и так далее) из GitHub в свой терминал, и это срабатывает, но сейчас это тоже не работает.

Я получаю ошибки вроде:

 No parser could be inferred for file: ...

Для некоторых файлов в определённых условиях VSCode корректно переформатирует код при сохранении и сообщает о синтаксических ошибках, но сейчас это тоже не работает.

Что вы хотите сделать?

Я хочу провести демонстрацию экрана (через Zoom или что-то подобное), чтобы вы помогли мне разобраться, как:

  • VSCode запускает все необходимые проверки при сохранении, исправляет форматирование и сообщает о проблемах.
  • Я могу запускать yarn eslint и любые другие инструменты из линтинга через командную строку.

Когда это нужно?

Прежде чем я окончательно сойду с ума.

Какой у вас бюджет в долларах США для этой задачи?

Я использую Pop!_OS, который по сути является Ubuntu.

Если вы уверены, что сможете решить эту проблему, я готов оплатить один час вашей работы по вашему стандартному тарифу. Если вы сможете справиться за десять минут, я с радостью оплачу полный час. Все в выигрыше.

2 лайка

Джей,

раздражает, правда?

Что я делаю в таких случаях:

  • изучаю рабочие процессы CI для популярного плагина
  • смотрю соответствующий конфиг в корне плагина

Вы можете увидеть, как выглядят мои тесты линтинга для Chatbot здесь:

Я считаю, что eslint и prettier можно запускать из директории плагина, а rubocop — из директории discourse.

Если это решит вашу проблему, не стесняйтесь преобразовать это в тему Development, вы здесь как дома :slight_smile:

1 лайк

Я слепо копирую рабочие процессы из GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins · GitHub и GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes · GitHub. (Для моего плагина дашборда, который зависит от плагина Stripe, мне приходится немного корректировать плагин-шаблон). Я считаю, что этого достаточно для линтинга.

Однако я хочу, чтобы VSCode выполнял линтинг до того, как я сделаю коммит. Раньше у меня это работало, но теперь перестало. Мне кажется, что кто-то, кто разбирается в VSCode так же хорошо, как я разбирался в Emacs 20 лет назад, мог бы сказать что-то вроде: «Нажми Control-P, сделай то-то для установки инструмента форматирования, отредактируй файл конфигурации, чтобы он делал нужное», и тогда я снова мог бы нажимать Control-S, и мой Handlebars, JavaScript и всё остальное красиво форматировались, а также находились все назойливые переменные, которые я определил, но не использовал, и так далее.

Приближаемся

Хорошо, но я сделал следующее:

      npm install --global yarn
      yarn add prettier

И теперь у меня есть discourse-prettier:

#!/usr/bin/env bash
if [ -n "$(find assets -type f \( -name "*.scss" -or -name "*.js" -or -name "*.es6" -or -name "*.hbs" \) 2>/dev/null)" ]; then
  yarn prettier --write "assets/**/*.{scss,js,es6,hbs}"
fi
if [ -n "$(find admin/assets -type f \( -name "*.scss" -or -name "*.js" -or -name "*.es6" -or -name "*.hbs" \) 2>/dev/null)" ]; then
  yarn prettier --write "admin/assets/**/*.{scss,js,es6,hbs}"
fi
if [ 0 -lt $(find test -type f \( -name "*.js" -or -name "*.es6" \) 2> /dev/null | wc -l) ]; then
  yarn prettier --write "test/**/*.{js,es6}"
fi

if [ -n "$(find assets -type f \( -name "*.scss" -or -name "*.js" -or -name "*.es6" -or -name "*.hbs" \) 2>/dev/null)" ]; then
  yarn prettier --list-different "assets/**/*.{scss,js,es6,hbs}"
fi
if [ -n "$(find admin/assets -type f \( -name "*.scss" -or -name "*.js" -or -name "*.es6" -or -name "*.hbs" \) 2>/dev/null)" ]; then
  yarn prettier --list-different "admin/assets/**/*.{scss,js,es6,hbs}"
fi
if [ 0 -lt $(find test -type f \( -name "*.js" -or -name "*.es6" \) 2> /dev/null | wc -l) ]; then
  yarn prettier --list-different "test/**/*.{js,es6}"
fi

Это решило часть моей проблемы, так что хотя бы теперь я могу запускать prettier из командной строки. Но я всё ещё готов заплатить за помощь, чтобы VSCode выполнял мою грязную работу. При сохранении он должен запускать eslint (или rubocop, или что-то ещё) и либо исправлять ошибки, либо сообщать, что не может. Я слишком стар, чтобы думать, что мой редактор должен писать мой код, но не настолько стар, чтобы считать, что он не должен его форматировать.

Раньше была тема, где кто-то предлагал, какие плагины VSCode он использует, что мне немного помогло, но сейчас я её не вижу.

1 лайк

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.