Macros (évaluées au build)

Des fonctions $ réservées sont évaluées par le compilateur et remplacées par des littéraux avant la transpilation : inliner un fichier, du JSON, une variable d'environnement, ou l'horodatage du build. Vol d'idée à Bun ; passe sûre (lexer + garde de re-parsing). Les valeurs ci-dessous sont figées dans le bundle.

Astuce
Les macros ignorent les chaînes, gabarits et commentaires (le bloc de code ci-dessous contient $buildTime() en texte — non remplacé). Si une expansion casse l'analyse, le fichier est laissé intact. Désactivable via BEXT_MACROS=0. v1 : les fichiers inlinés ne sont pas suivis pour l'invalidation du cache.

Source

src/app/examples/macros/page.tsxTSX
// evaluated at BUILD, inlined as literals:
const BUILD_TIME: string = $buildTime();        // → an ISO string
const BUILD_TS: number = $buildTimestamp();      // → epoch millis
const BUILD_ID: string = $buildId();             // → a per-build id
const NODE_ENV = $env("NODE_ENV");               // → env value or null
const META = $inlineJson("macro-data.json");     // → JSON.parse(<inlined>)

Inliné au build

MacroValeur (littéral compilé)
$buildTime()2026-09-04T01:13:32Z
$buildTimestamp()1788484412414
$buildId()1a069fa63fe
$env("NODE_ENV")null
$inlineJson("macro-data.json").namebext build-time macros