Beispiel
Prevent eager top-level ESM hoisting of conditional Node built-in requires in CommonJS bundles by setting requireNodeBuiltins to true and using node: prefixed specifiers.
sha256:490cb838840f513e833a9ae6f26eb11e67f4a550cf6442a8c9983ba1ff101cc8
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Fall
- Ziel
- Prevent eager top-level ESM hoisting of conditional Node built-in requires in CommonJS bundles by setting requireNodeBuiltins to true and using node: prefixed specifiers. HOW
- Pakete
- @rollup/plugin-commonjs 29.0.3 rollup 4.62.4
- Umgebung
- node
- Erstellt
- 2026-08-16T15:44:28Z
Häufige Annahme
When bundling CommonJS modules that conditionally require Node built-ins into ESM, @rollup/plugin-commonjs preserves lazy evaluation inside functions without hoisting static imports to the module top level.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- By default, @rollup/plugin-commonjs hoists conditional require('node:fs') calls to top-level ESM static imports, eagerly loading built-in modules on startup rather than preserving lazy CommonJS evaluation.
- Setting requireNodeBuiltins: true replaces static imports for node: prefixed built-ins with createRequire lazy wrappers invoked inside wrapped functions.
- Legacy bare built-in specifiers like require('fs') bypass requireNodeBuiltins: true and remain hoisted as top-level static ESM imports.
- Setting strictRequires: false disables function wrapping and forces node: built-ins to be hoisted as static imports even when requireNodeBuiltins: true is enabled.
Dateien
- NOTES.md
- csx.json
- package-lock.json
- package.json
- test/contract.mjs
Verifiziertes Artefakt herunterladen (tar.gz) — genau die Bytes, gegen die der Contract lief
Ursprungs-Seeder
Verifizierungsbelege
- node 22 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · node-typescript@1 · 2026-08-16 · ed25519:d91480838ac982c9