10 points par mintplo 2026-02-11 | Aucun commentaire pour le moment. | Partager sur WhatsApp

Retour d’expérience du chapter frontend de Lemonbase : migration vers ESLint V9 pour répondre à la fin du support de V8, puis résolution des problèmes de performance grâce à l’adoption d’une approche hybride avec Biome.

Contexte d’adoption

  • En septembre 2024, l’annonce de la fin du support d’ESLint V8 a rendu la migration vers V9 indispensable pour continuer à recevoir les correctifs de sécurité et de bugs
  • À partir de V9, la configuration basée sur .eslintrc.js est dépréciée et Flat Config devient la configuration par défaut
  • Il fallait vérifier environ 400 règles, une structure de fichiers de configuration séparée en deux, ainsi que la compatibilité de nombreux plugins

Processus de migration

  • L’outil officiel de migration d’ESLint s’est révélé décevant, se limitant essentiellement à un wrapping avec @eslint/compat
  • Un premier brouillon a été généré avec des outils d’IA, mais de nombreuses règles manquaient et plusieurs problèmes de compatibilité sont apparus
  • Au final, un audit exhaustif a été mené en comparant ligne par ligne les règles V8 et V9 dans un tableur

Problèmes de performance après la migration

  • Une fois passé à V9, l’exécution est au contraire devenue plus lente, passant de 154 secondes à 184 secondes, soit 30 secondes de plus
  • La règle import/no-cycle est devenue 10 fois plus lente que sous V8 et représentait à elle seule 45,8 % du temps total
  • La règle prettier/prettier, à 10,2 %, constituait aussi un goulot d’étranglement à cause du surcoût lié au double parsing

Adoption d’un hybride avec Biome

  • Plutôt qu’un remplacement complet, l’équipe a choisi une approche consistant à « les utiliser ensemble en se concentrant sur les gains »
  • Remplacement de Prettier par Biome Formatter, avec un temps de formatage réduit de 14 secondes à 2 secondes
  • ESLint ne conserve plus que les règles personnalisées du projet

Résultat final

  • ESLint V8 : 154 secondes → ESLint V9 : 184 secondes
  • ESLint seul → hybride Biome + ESLint : ~20 secondes

Ce qu’ils en ont retenu

  • Lorsqu’on confie une migration à une IA, il faut d’abord lui faire établir un plan, puis faire relire le résultat par un humain, en définissant clairement les critères de réussite (par exemple : obtenir le même résultat qu’en V8)
  • Au lieu d’attendre l’outil parfait, il est parfois plus rapide de bien combiner les outils disponibles dès maintenant

Points d’attention

  • Utiliser les deux outils ensemble implique de gérer à la fois eslint.config.mjs et biome.json, avec un risque de conflit entre les règles
  • Il faut définir clairement quelle règle est prise en charge par quel outil, et expliquer cette répartition des rôles lors de l’onboarding des nouveaux membres

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.