Проблемы с eslint

У меня есть новый плагин, который не проходит тесты линтера:

Run if test -f .prettierrc.cjs; then
yarn run v1.22.22
$ /home/runner/work/discourse-multi-rating/discourse-multi-rating/node_modules/.bin/eslint --ext .js,.gjs,.js.es6 --no-error-on-unmatched-pattern test/javascripts assets/javascripts admin/assets/javascripts
Invalid option '--ext' - perhaps you meant '-c'?
You're using eslint.config.js, some command line flags are no longer available. Please see https://eslint.org/docs/latest/use/command-line-interface for details.
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Error: Process completed with exit code 2.

Я не вижу опции --ext в своём исходном коде, возможно, она находится в @discourse/lint-configs/eslint? Не знаю, где её найти.

Не понимаю, в чём моя ошибка и почему это не влияет на множество других плагинов. :person_shrugging:

Я сталкивался с этой ошибкой в своём плагине. Оказалось, что она возникла из-за попытки обновить файл конфигурации eslint с .eslintrc.cjs до актуального формата flat config eslint.config.js с помощью миграции eslint. Файл eslint.config.js не поддерживает опцию --ext (Command Line Interface Reference - ESLint - Pluggable JavaScript Linter), поэтому возврат к более старой версии .eslintrc.cjs должен решить проблему.

Дополнительные инструкции по настройке файлов линтинга доступны по адресу: lint-configs/lint-configs at main · discourse/lint-configs · GitHub

Для дополнительного контекста: пакет @discourse/lint-configs использует eslint 8.57.0, который по умолчанию не применяет новый формат flat config (Configuration Files - ESLint - Pluggable JavaScript Linter).

В этом-то и странность. Я нигде не вижу eslint.config.js на своей файловой системе (если верить locate), и тем более в дереве исходного кода.

Тебе удалось это исправить?

О, это странно… Да, мне удалось заставить свой вариант работать.

Проверьте package.json, чтобы убедиться, что в devDependencies указан "eslint": "8.57.0", а не версия 9.x.x.

Да. :crying_cat_face: Я только что заметил, что в package.json были изменены eslint и prettier. Клянусь, я только что клонировал его из шаблона. :person_shrugging:

Теперь на GitHub у меня возникают (настоящие) ошибки, но я не могу запустить eslint локально, чтобы он мог исправить всё.

Джей,

сделай:

yarn

затем

yarn eslint --fix plugins/<my-plugin>

(конечно, замени «my-plugin» на название своего плагина)

оба commands выполняй из директории discourse

О боже. Я только что каким-то образом починил это так, что воспроизвести это было совершенно невозможно, так что это просто спасение. А теперь я добавил это в свой волшебный файл, так что в следующий раз это может сработать.

if [[ "$ARG" == 'fix-eslint' ]]
then
  cd ~/src/discourse-repos/discourse
  yarn
  for x in ~/plugins/* 
  do
    yarn eslint --fix x
  done
fi

Погодите. Вы имеете в виду, что это обновит eslint до правильной версии? Или запустит eslint? Или что, если я запущу его таким образом, у меня будет нужная версия?