ESM-only (fin du double format)
JavaScript 🟡 MidDéfinition
Pratique de publier un paquet npm uniquement en modules ES, sans build CommonJS parallèle. Elle est devenue défendable depuis que require(esm) est activé par défaut dans Node 22.12.0 et 20.19.0 (stable en 25.4.0) : un consommateur CommonJS peut charger le paquet. L'article « Move on to ESM-only » (5 février 2025) chiffre l'adoption d'ESM sur npm à 25,8 % fin 2024 et liste les coûts du double format : deux jeux de fichiers et de .d.ts, singletons dupliqués, taille doublée.
Analogie
Arrêter d'imprimer un journal en deux formats quand tous les kiosques acceptent le nouveau.
Exemple de code
{
"name": "ma-lib",
"type": "module",
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
}
},
"engines": { "node": ">=20.19" }
}
Cas d'usage
Nouvelles bibliothèques, outils en ligne de commande, paquets destinés au navigateur (tree shaking) ou aux versions de Node qui supportent require(esm).
Anti-pattern
Termes liés
Fiche mise à jour le 2026-09-27