Import Attributes (with)

JavaScript 🟡 Mid

Dé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é).
#core#ES2025#modules#node22

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre