2026 Checklist pièges front-end :
Biome + TypeScript incrémental sur Mac distant
Sur des runners Mac loués, on enchaîne souvent Biome et TypeScript sans contrat commun sur les caches, les fils d’exécution ni l’ordre des jobs CI/CD. Cette checklist compare biome.json aux réglages tsc --incremental, propose des chemins de cache réalistes et une grille d’acceptation en trois étapes avant tag. À lire avec notre checklist monorepo pnpm et cache distant et le guide caches Vite et Webpack sur Mac distant pour garder l’analyse statique rapide et déterministe.
01 Frictions typiques sur workers Mac distants
Ruée vers les fils : Biome parallélise le travail fichier par fichier tandis que tsc concentre un gros graphe dans un processus dominant. Ensemble ils peuvent saturer les cœurs performance et figer la session SSH. Caches empoisonnés : changer de branche sans invalider tsbuildinfo donne des pipelines verts qui échouent en local. Mauvais ordre d’étapes : lancer des contrôles navigateur coûteux avant le lint et les types gaspille des minutes à chaque push. Sur un parc CI/CD hétérogène, documentez ces trois points dans le runbook partagé avec les équipes release.
02 Tableau de décision : biome.json et tsc incrémental
Le tableau suivant aligne les propriétaires des règles de formatage avec ceux du graphe de types. Biome couvre lint et format ; TypeScript incrémental réutilise l’information de type entre exécutions. Les options CLI les plus utiles en pipeline sont rappelées côte à côte.
| Sujet | Biome (biome.json / CLI) |
TypeScript (tsc / tsconfig) |
|---|---|---|
| Leviers principaux | files.include, files.ignore, formatter, linter, vcs.useIgnoreFile |
"incremental": true, "tsBuildInfoFile" (optionnel), "composite": true pour les références de projet |
| Exemples de drapeaux CLI | biome check --write . en local ; biome ci . en pipeline (échec si dérive) |
tsc -p tsconfig.json --incremental ou tsc -b pour monorepo à références |
| Modèle de parallélisme | Pool de workers multi-fichiers dans le binaire Biome | Processus largement unique ; tsc -b parallélise au niveau du graphe de projets |
| Artefact de cache typique | Caches locaux au dépôt ; consulter les notes de version Biome pour chemins et verbosité | Fichier *.tsbuildinfo (chemin de tsBuildInfoFile, défaut souvent .tsbuildinfo à côté du tsconfig) |
| Entrées de clé CI | Lockfile, version Biome, empreinte de biome.json |
Lockfile, version TypeScript, graphe tsconfig, hash des globs sources |
En pratique, combinez tsc --noEmit --incremental (ou build de références) avec biome ci : le premier garantit la cohérence des types, le second la discipline de style sans lancer le compilateur pour le formatage.
03 Workers parallèles et liaison des cœurs (recommandations)
macOS n’expose pas taskset comme Linux. La « liaison » utile est une politique de charge : réserver un ou deux cœurs logiques à sshd, WindowServer si session graphique, et aux démons métadonnées. Utilisez sysctl hw.ncpu comme plafond, pas comme objectif de concurrence pour chaque outil Node.
| Profil d’hôte | Suggestion Biome + tsc |
|---|---|
| 8 cœurs performance (classe M4 de base) | En CI, enchaîner Biome puis tsc ; parallèle seulement si environ vingt-quatre gigaoctets de RAM libre et disque rapide. |
| 10–12 cœurs (classe Pro) | Parallèle possible : lancer Biome, puis tsc avec NODE_OPTIONS=--max-old-space-size=8192 ; plafonner les autres outils Node à environ la moitié des CPU logiques. |
| Session SSH interactive | Préférer nice ou réduire le nombre de jobs lourds simultanés pour garder l’interface réactive pendant les contrôles longs. |
Certaines équipes enveloppent les jobs avec des attributs taskpolicy sur macOS pour orienter la QoS, mais la majorité des pipelines front se contentent de limiter les étapes lourdes concurrentes et de s’appuyer sur les fichiers incrémentaux pour réduire le temps mural.
04 Répertoires de cache à restaurer en CI
Persistez les caches en lecture seule entre commits lorsque le lockfile est inchangé. Séparez les caches par branche ou incluez le hash du lockfile dans la clé d’artefact. Croisez avec préflight des scripts package.json sur Mac distant pour invalider les bonnes couches quand les scripts évoluent.
- TypeScript : restaurer le répertoire qui contient chaque
tsBuildInfoFileainsi quenode_modules/.cachesi votre wrapper y stocke des données auxiliaires. - Biome : mettre en cache la racine du dépôt où se trouve
biome.jsonet tout dossier interne de cache écrit après le premier passage. - Règle de purge : supprimer les fichiers d’info de build lors d’un changement de
package.json, de globs workspace ou d’options compilateur.
05 CI et CD sur Mac distant
Ordonnez les jobs du signal le moins coûteux au plus coûteux : installation des dépendances, puis Biome, puis tsc --noEmit incrémental, tests unitaires, bundlers, enfin smoke et contrôles pré-déploiement. La phase CD ne doit pas promouvoir un build qui a sauté la vérification de types alors que Biome est vert : Biome n’implémente pas le contrôle sémantique complet des types.
Pour les monorepos, placez la restauration du cache distant (registry, Turbo, etc.) avant les étapes Biome/tsc afin que les chemins résolus soient stables ; voir encore la checklist pnpm et miroir de registre.
06 Runbook exécutable en cinq étapes
- Épingler les versions Biome et TypeScript dans le lockfile et les imprimer dans l’en-tête du journal CI.
- Exécuter
biome ci .avec unbiome.jsonversionné à la racine ; échouer sur toute dérive de formatage. - Lancer
tsc -p tsconfig.json --incremental --noEmit(outsc -bavec références) et publiertsbuildinfocomme artefact de cache clé par branche et lockfile. - Consigner le temps mural et la saturation CPU ; si les deux étapes dépassent ensemble environ quatre-vingts pourcent de CPU pendant dix minutes, scindez-les en deux jobs de workflow.
- En cas d’échec, joindre les cinquante premiers diagnostics de chaque outil au ticket pour éviter de relancer toute la suite à l’aveugle.
07 Trois étapes d’acceptation avant livraison
Étape A : sur le SHA de release exact, exécuter Biome et tsc incrémental avec caches froids une fois pour prouver la reproductibilité. Étape B : une seconde exécution à cache chaud doit être sensiblement plus rapide (visez au moins trente pour cent) ; sinon la clé d’artefact est probablement incorrecte. Étape C : enchaîner le parcours smoke documenté dans le runbook CD avant le tag ; en cas d’échec, corréler avec la clé de cache utilisée.
Traitez biome.json et tsc --incremental comme des portes complémentaires, persistez leurs artefacts avec des clés strictes, et plafonnez le parallélisme sur les Mac distants pour garder SSH utilisable. Le bloc d’acceptation en trois étapes attrape les tsbuildinfo périmés avant les utilisateurs.
Pour aller plus loin : parcourez l’accueil MacWww pour le contexte produit, comparez les forfaits et tarifs de location Apple Silicon, et ouvrez le centre d’aide (SSH, VNC, automatisation). L’index du blog regroupe d’autres recettes CI pour le front.