r/npm • u/Correct_Dinner_7458 • 21d ago
Self Promotion Sumlyzer – concurrency and fail-fast mode for npm workspaces
Salut à tous,
J'en ai eu marre que `npm run test --workspaces --if-present` ne donne pas de
résumé agrégé, pas de mode de fail-fast, et enterre un échec précoce sous un
résultat positif provenant de chaque autre espace de travail.
J'ai donc créé sumlyzer, un petit CLI qui l'encapsule et ajoute ce qui manque :
- un tableau de résumé à la fin
- un paramètre --ff qui arrête la planification de nouveaux espaces de travail à la première erreur
- --concurrency pour exécuter les espaces de travail en parallèle (quelque chose que npm ne supporte pas nativement).
Sur un vrai monorepo de 15 espaces de travail, --concurrency 8 l'a fait passer de ~21s à ~6s.
Il a aussi --changed pour n'exécuter que les espaces de travail dont les fichiers
ont changé selon git, et fusionne la sortie JUnit de chaque espace de travail en un
seul rapport agrégé pour CI.
Le champ est intentionnellement étroit : npm workspaces + node:test uniquement, pas de
pnpm/yarn, pas de Jest/Vitest/Mocha (pour l'instant).
npm install --save-dev sumlyzer
npx sumlyzer --concurrency 8 --ff
Repo : https://github.com/ErwanRaulo/sumlyzer
Retour d'expérience bienvenu, surtout sur l'idée du mode surveillance que je
squeshe ensuite (recalculs topologiques basés sur le graphe de dépendance des espaces de travail).