0 Tage Serie
javascript / expert
Snippet

Benutzerdefinierte ESM-Transformationshooks

Node.js ESM-Loader ermöglichen es Entwicklern, den Lebenszyklus des Modulladens abzufangen. Durch den Export eines 'load'- oder 'resolve'-Hooks können Sie Quellcode im laufenden Betrieb transformieren, benutzerdefinierte Protokolle implementieren oder nicht standardmäßige Dateierweiterungen ohne Vorkompilierungsschritte verarbeiten.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
// loader.mjs
export async function load(url, context, nextLoad) {
if (url.endsWith('.custom')) {
const { source } = await nextLoad(url, { ...context, format: 'module' });
const transformed = source.toString().replace(/@SECRET/g, '"REDACTED"');
return { format: 'module', shortCircuit: true, source: transformed };
}
return nextLoad(url);
}
nodejs
Erklärung
1
export async function load(url, context, nextLoad) {
Der Hook, der von Node.js aufgerufen wird, wenn ein Modul geladen wird.
2
shortCircuit: true,
Gibt an, dass dieser Hook die Anfrage bearbeitet hat und keine weiteren Hooks aufgerufen werden sollen.
3
source: transformed
Der modifizierte Quellcode, den Node.js als Modul auswerten wird.