Aller au contenu principal

Biome : pourquoi remplacer ESLint par Rust

L'ère de Node.js pour le tooling touche à sa fin. Découvez Biome, la toolchain Rust qui divise vos temps de CI par 100.
Catégorie

Code quality

Parce que 'ça marche sur ma machine' n'est pas une métrique de qualité. Apprenez à transformer votre code complexe en une architecture propre, lisible et surtout maintenable.

Lecture
3 min
Niveau
Intermédiaire
août 11 2025
Partager

En ingénierie logicielle, la vitesse de la boucle de feedback est critique. Si un développeur doit attendre 10 secondes pour savoir qu'il a oublié un point-virgule, il perd son productivité. Si la CI prend 4 minutes pour valider le style, le déploiement est ralenti.

Pendant 10 ans, nous avons accepté la lenteur d'ESLint et de Prettier parce que "c'était le standard". Mais ces outils tournent sur Node.js (JavaScript), un langage interprété, single-threaded, mal adapté aux tâches intensives de parsing et d'analyse de code.

Voici Biome. Et c'est un changement de paradigme.

La physique du problème (Rust vs V8)

ESLint doit :

  • Démarrer le runtime Node.js (lourd).
  • Charger des centaines de fichiers JS.
  • Parser votre code en AST.
  • Parcourir cet AST avec du JavaScript.

Biome est écrit en Rust.

  • C'est un binaire natif, compilé, optimisé au niveau machine.
  • Il utilise une architecture parallèle (multi-threading) que Node.js ne peut pas égaler.
  • Il construit l'AST une seule fois pour tout faire (Linter, Formatter, Import Sorter).

Ce n'est pas une optimisation. C'est un changement d'echelle.

L'architecture "Tout-en-un"

Le second problème de l'écosystème JS actuel est la fragmentation. Pour avoir un linting correct, il faut : eslint, prettier, eslint-config-prettier, eslint-plugin-import, eslint-plugin-react...

C'est une maintenance constante pour éviter les conflits de versions.

Biome adopte l'approche inverse : Une seule Toolchain. Le binaire contient tout. La configuration tient en dix lignes dans biome.json :

JSON
{
    "linter": { "enabled": true, "rules": { "recommended": true } },
    "formatter": { "enabled": true, "indentStyle": "space" },
    "organizeImports": { "enabled": true }
}

Plus de débat. Plus de conflit. Ça marche !

Intégration PHP (sans Node.js)

L'argument final pour un développeur Symfony est l'indépendance vis-à-vis de Node. Nous ne voulons pas installer npm et gérer un package.json juste pour du linting.

Grâce au bundle kocal/biome-js-bundle, Biome s'installe via Composer :

Bash
composer require --dev kocal/biome-js-bundle

Cela télécharge le binaire Biome standalone. Vous pouvez désormais vérifier vos assets JS/TS depuis votre pipeline, sans aucune dépendance Node.js sur votre serveur ou votre CI.

Le mot de la fin

L'adoption de Biome n'est pas une question de mode. C'est une question d'efficience. En informatique, quand un outil fait le même travail 100 fois plus vite en consommant 10 fois moins de mémoire, il finit toujours par remplacer l'ancien standard. ESLint a été un excellent serviteur. Mais à l'ère du Rust, il est devenu un goulot d'étranglement.

0 réaction

Poursuivre la lecture

Sélectionné avec soin pour vous.

Le FOUC n'est pas un bug graphique, c'est une faille d'architecture !

Marre du contenu qui saute au chargement ? Découvrez comment éradiquer le FOUC (Flash of Unstyled Content), améliorer votre score CLS et optimiser l'UX de vos applications web modernes.

Votre terminal est bête : voici comment le rendre intelligent

Historique contextuel, autocomplétion Docker, switch PHP automatique... Découvrez comment transformer une fenêtre noire en véritable assistant de code.

Les shortcodes : de WordPress à une architecture moderne avec PHP 8.5

Modernisez vos contenus dynamiques. Apprenez à développer un moteur de shortcodes sécurisé.