Nous avons décidé de ne pas attendre le linter parfait : migration vers ESLint V9 et adoption d’un hybride avec Biome
(blog.lemonbase.team)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.jsest 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-cycleest 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.mjsetbiome.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.