Import Attributes (with)
JavaScript 🟡 MidDéfinition
Syntaxe ES2025 qui accole des métadonnées à un import : import data from './x.json' with { type: 'json' }. L'attribut type: 'json' est le seul défini par ECMAScript (« JSON modules », ES2025) ; les navigateurs ajoutent type: 'css'. L'ancienne forme assert est abandonnée. Node.js exige l'attribut pour importer un JSON et l'a déclaré stable en 22.12.0 et 20.18.3 ; TypeScript 6.0 déprécie assert.
Analogie
L'étiquette « fragile » sur un colis : elle dit au transporteur comment traiter le contenu, pas ce qu'il est.
Exemple de code
// Statique
import conf from './config.json' with { type: 'json' };
console.log(conf.port);
// Dynamique
const { default: i18n } = await import('./fr.json', {
with: { type: 'json' }
});
// Navigateur : feuille de style comme module
// import feuille from './app.css' with { type: 'css' };
Cas d'usage
Configuration, traductions, fixtures : importer du JSON sans fs.readFile ni bundler.
Anti-pattern
Importer un JSON sans l'attribut : Node lève une erreur, et le navigateur refuse par sécurité (type MIME non vérifié).
Termes liés
Sources
Fiche mise à jour le 2026-09-27