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
// 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
| Macro | Valeur (littéral compilé) |
|---|---|
| $buildTime() | 2026-09-04T01:13:32Z |
| $buildTimestamp() | 1788484412414 |
| $buildId() | 1a069fa63fe |
| $env("NODE_ENV") | null |
| $inlineJson("macro-data.json").name | bext build-time macros |