Problème avec eslint

J’ai un nouveau plugin qui échoue aux tests de lint :

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
Option invalide « --ext » - peut-être vouliez-vous dire « -c » ?
Vous utilisez eslint.config.js, certains indicateurs de ligne de commande ne sont plus disponibles. Veuillez consulter https://eslint.org/docs/latest/use/command-line-interface pour plus de détails.
error La commande a échoué avec le code de sortie 2.
info Consultez https://yarnpkg.com/en/docs/cli/run pour la documentation sur cette commande.
Error: Process completed with exit code 2.

Je ne vois pas --ext dans mon arborescence de fichiers source, donc peut-être qu’il se trouve dans @discourse/lint-configs/eslint) ? Je ne sais pas où le trouver.

Je ne vois pas ce que je fais de mal ni comment cela n’affecte pas un grand nombre de plugins. :person_shrugging:

J’ai vu cette erreur sur mon propre plugin. J’ai compris que c’était parce que j’avais essayé de mettre à jour le fichier de configuration eslint de .eslintrc.cjs vers le dernier format de configuration plate eslint.config.js via la migration eslint. eslint.config.js ne prend pas en charge --ext (Command Line Interface Reference - ESLint - Pluggable JavaScript Linter), donc changer le fichier pour l’ancien .eslintrc.cjs devrait résoudre le problème.

Il y a des instructions supplémentaires sur la façon de configurer les fichiers de linting sur lint-configs/lint-configs at main · discourse/lint-configs · GitHub

Pour plus de contexte, @discourse/lint-configs utilise eslint 8.57.0, qui par défaut n’utilise pas la nouvelle configuration plate Configuration Files - ESLint - Pluggable JavaScript Linter.

2 « J'aime »

C’est ça qui est si étrange. Je ne vois pas de eslint.confi.js quelque part sur mon système de fichiers (si je peux faire confiance à locate, et certainement pas dans mon arborescence source).

As-tu réussi à le faire fonctionner ?

C’est bizarre… Oui, j’ai réussi à faire fonctionner le mien.

Je vérifierais le package.json pour voir si les devDependencies contiennent "eslint": "8.57.0", et non une version 9.x.x.

Oui. :crying_cat_face: Je viens de remarquer que eslint et prettier ont été modifiés dans package.json. Je vous jure que ce n’était qu’il y a une minute que je l’ai cloné à partir du squelette. :person_shrugging:

Maintenant, cela me donne des erreurs (légitimes) sur github, mais je ne peux pas faire fonctionner eslint localement pour pouvoir le corriger.

1 « J'aime »

Jay,

fais :

yarn

puis

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

(mettez évidemment à jour « mon-plugin »)

les deux depuis le répertoire discourse

2 « J'aime »

OMG. Je viens de réussir à le corriger d’une manière complètement impossible à reproduire, donc c’est une bouée de sauvetage. Et maintenant, je l’ai ajouté à mon fichier magique, donc cela pourrait fonctionner la prochaine fois

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

Attendez. Dites-vous que cela mettra à jour eslint vers la bonne version ? Ou exécutera eslint ? Ou que si je l’exécute de cette façon, ce sera la bonne version ?