CodeVetter · Repo Unpack · System map
rolldown/rolldown
The implementation crosses TypeScript, Node-API, and Rust boundaries. The public package supports independent builds, while watch and dev APIs introduce longer-lived runtime owners. Persistent state in the inspected architecture consists primarily of module/cache structures and filesystem artifacts. Distribution includes native and WASI/browser builds, with separate documentation deployment.
- The documented architecture places the TypeScript API above crates/rolldown_binding and the Rust core; the public entry exports build, defineConfig, rolldown, and watch.
- The CLI executable enables Node's compile cache when available, schedules an unreferenced cache flush, then imports the compiled CLI entry.
- ClassicBundler creates a fresh BundleFactory per operation; the core Bundler architecture retains its factory and ScanStageCache across builds.
- Bundle owns filesystem access, shared options/resolver/emitter, a plugin driver, warnings, and a scan cache; its output pipeline calls LinkStage followed by GenerateStage.
- The Rust workspace includes crates and tasks and uses edition 2024; the root Node manifest pins pnpm 11.24.0 and requires Node ^20.19.0 or >=22.12.0.
- Oxc provides configured AST, transformer, minifier, semantic, and codegen capabilities; napi enables async/tracing integration, and release builds use fat LTO with one codegen unit.
- just test-rust runs workspace tests excluding the binding crate; Node recipes build the package and route to Rolldown and Rollup suites, with separate browser, WASI, and WebContainer commands.
- Native/browser/WASI package builds are separate scripts; npm publishing uses the release environment and OIDC provenance permission, while VitePress documentation deploys through a main-only Void job.