Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TECH] Utiliser le nouveau format de config ESLint sur l'API #8995

Merged
merged 5 commits into from
May 29, 2024

Conversation

yannbertrand
Copy link
Member

@yannbertrand yannbertrand commented May 21, 2024

🦄 Problème

Dans la version 9 d'ESLint, les fichiers de configuration changent de format. On parle de "Flat" config. Pour pouvoir faire cette montée de version il est nécessaire d'anticiper la migration de format de fichier de configuration.

🤖 Proposition

Migrer vers le nouveau format de fichier de configuration en suivant le guide de migration de @1024pix/eslint-plugin.

La migration n'est pas ISO fonctionnelle :

  • On supprime une règle qui nous embête un peu sur les imports de devDependencies,
  • L'ordonnancement des clés dans les fichiers de traductions ne fonctionne plus (le plugin ESLint associé n'est plus mis à jour depuis 2022, à voir si on peut migrer vers un autre).
  • Les scripts lint:translations et lint:translations:fix ont été supprimés, lint:js n'ignore plus ce dossier mais ne lint quand même pas le JSON (j'ai l'impression qu'il faudrait installer un parser spécifique).

Enseignements pour la migration

  • @babel/plugin-syntax-import-assertions est remplacé par '@babel/plugin-syntax-import-attributes' (import ... assert { type: 'json' } doit être remplacé par import ... with { type: 'json' }). Il faut modifier la config pour ajouter le plugin babel importAttributes
  • Les fichiers .eslintignore ne sont plus utilisés.
  • La structure de fichiers .eslintrc en cascade n'est plus recommandée. J'ai pris le parti de tout centraliser dans un seul fichier.
  • Le glob pour matcher les fichiers et ignores ne va pas chercher récursivement dans les dossier par défaut : préférer ** si nécessaire.
  • La CLI ne permet plus de filtrer par extension, ils recommandent d'utiliser le glob.
  • @eslint/compat permet d'utiliser des plugins qui ne supportent pas encore la Flat config.
  • Certaines de nos configs ne servaient plus à rien, je les ai supprimées (mais j'en ai peut être oublié).

J'ai documenté une partie des galères côté ESLint qui prennent du feedback sur la montée de version : eslint/eslint#18456 (comment).

🌈 Remarques

On a plus besoin de @1024pix/eslint-config !

💯 Pour tester

CI et lint ok en local.

Vérifier qu'il n'y a pas d'autres régressions que ce qui est documenté dans la section "Proposition".

@pix-bot-github
Copy link

Une fois les applications déployées, elles seront accessibles via les liens suivants :

Les variables d'environnement seront accessibles via les liens suivants :

@yannbertrand yannbertrand self-assigned this May 21, 2024
@yannbertrand yannbertrand force-pushed the use-flat-config branch 3 times, most recently from 7070dee to de54af8 Compare May 22, 2024 08:55
@yannbertrand yannbertrand force-pushed the use-flat-config branch 6 times, most recently from f680f90 to a3756d1 Compare May 28, 2024 15:39
@yannbertrand yannbertrand added cross-team Toutes les équipes de dev 👀 Tech Review Needed labels May 28, 2024
@yannbertrand yannbertrand marked this pull request as ready for review May 28, 2024 15:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants