# Extension points — rolldown/rolldown

> Canonical page: https://codevetter.com/unpack/rolldown/extension-points

# Extension points — rolldown/rolldown

Scanned commit 37d60ff510b4b326f4b587c27f28c606d76373e8 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Plugins are the principal extension mechanism across JavaScript and Rust. Hook adapters preserve metadata and filters across the language boundary, while factories manage state lifetime. Additional APIs expose compiler utilities and experimental dev callbacks. CLI options derive from schema information rather than a standalone hand-maintained command inventory.
- JavaScript options hooks execute in pre/normal/post order and can replace input options; outputOptions hooks synchronously apply the same ordering model to output settings. — [packages/rolldown/src/plugin/plugin-driver.ts#L13-68](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/plugin/plugin-driver.ts#L13-L68) [packages/rolldown/src/plugin/plugin-driver.ts#L87-110](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/plugin/plugin-driver.ts#L87-L110)
- bindingifyPlugin adapts build, output, and watch hook families; resolveId, transform, load, and renderChunk adapters return filter information alongside hook metadata. — [packages/rolldown/src/plugin/bindingify-plugin.ts#L1-33](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/plugin/bindingify-plugin.ts#L1-L33) [packages/rolldown/src/plugin/bindingify-plugin.ts#L80-107](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/plugin/bindingify-plugin.ts#L80-L107)
- Rust plugins implement Plugin: Any + Debug + Send + Sync + 'static, provide a name, and optionally override default no-op/None build_start, resolve_id, load, transform, and module_parsed hooks. — [crates/rolldown_plugin/src/plugin.rs#L33-69](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/crates/rolldown_plugin/src/plugin.rs#L33-L69) [crates/rolldown_plugin/src/plugin.rs#L86-120](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/crates/rolldown_plugin/src/plugin.rs#L86-L120)
- Builtin TypeScript factories construct named BuiltinPlugin descriptors; examples include import-glob, dynamic-import-vars, JSON, and resolver helpers, with some made callable through makeBuiltinPluginCallable. — [packages/rolldown/src/builtin-plugin/constructors.ts#L31-70](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/builtin-plugin/constructors.ts#L31-L70)
- Parallel plugin descriptors carry index/fileUrl/options into a shared registry and up to eight workers; workers import implementations, instantiate per-thread plugins, and register adapted callbacks. — [packages/rolldown/src/utils/initialize-parallel-plugins.ts#L13-47](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/utils/initialize-parallel-plugins.ts#L13-L47) [packages/rolldown/src/utils/initialize-parallel-plugins.ts#L92-103](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/utils/initialize-parallel-plugins.ts#L92-L103) [packages/rolldown/src/parallel-plugin-worker.ts#L13-46](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/parallel-plugin-worker.ts#L13-L46)
- CLI option registration iterates schemaInfo and alias metadata, skips never-typed entries, supports required/optional values, and registers a default variadic input command accepting unknown options for later warnings. — [packages/rolldown/src/cli/arguments/index.ts#L93-135](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/cli/arguments/index.ts#L93-L135) [packages/rolldown/src/cli/arguments/index.ts#L183-202](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/cli/arguments/index.ts#L183-L202)
- Bundle is generic over a cloneable FileSystem and delegates source reads/writes through that interface; plugin-backed virtual inputs provide another integration route, demonstrated by the browser smoke test. — [crates/rolldown/src/bundle/bundle.rs#L31-42](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/crates/rolldown/src/bundle/bundle.rs#L31-L42) [crates/rolldown/src/utils/load_source.rs#L12-28](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/crates/rolldown/src/utils/load_source.rs#L12-L28) [packages/browser-tests/tests/browser/rolldown.test.ts#L52-80](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/browser-tests/tests/browser/rolldown.test.ts#L52-L80)
- DevEngine.create converts caller callbacks for HMR, full output, and additional assets into binding callbacks and supplies watch/rebuild controls; this is an inspected integration boundary for hosting development behavior. — [packages/rolldown/src/api/dev/dev-engine.ts#L68-140](https://github.com/rolldown/rolldown/blob/37d60ff510b4b326f4b587c27f28c606d76373e8/packages/rolldown/src/api/dev/dev-engine.ts#L68-L140)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
