Skip to content

Comments

docs(apis): add hook graph#7671

Merged
graphite-app[bot] merged 1 commit intomainfrom
12-26-docs_apis_add_hook_graph
Jan 8, 2026
Merged

docs(apis): add hook graph#7671
graphite-app[bot] merged 1 commit intomainfrom
12-26-docs_apis_add_hook_graph

Conversation

@sapphi-red
Copy link
Member

@sapphi-red sapphi-red commented Dec 26, 2025

Added a graph that explains the order of the hooks and some internal process. A similar graph exists in Rollup's document.

image image

https://deploy-preview-7671--rolldown-rs.netlify.app/apis/plugin-api#build-hooks

The generation code is fragile, but I think it's fine as we only use it for the graph generation.

Copy link
Member Author


How to use the Graphite Merge Queue

Add the label graphite: merge-when-ready to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@netlify
Copy link

netlify bot commented Dec 26, 2025

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit 8d75e08
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/695f25e276e7ba00087a2a46

@sapphi-red sapphi-red force-pushed the 12-26-docs_apis_add_hook_graph branch 3 times, most recently from 5183e6f to bd62358 Compare December 26, 2025 12:49
@sapphi-red sapphi-red marked this pull request as ready for review December 26, 2025 12:59
Copilot AI review requested due to automatic review settings December 26, 2025 12:59
Copy link
Member Author

sapphi-red commented Dec 26, 2025

Merge activity

  • Dec 26, 12:59 PM UTC: The merge label 'graphite: merge-when-ready' was detected. This PR will be added to the Graphite merge queue once it meets the requirements.
  • Jan 8, 3:34 AM UTC: sapphi-red added this pull request to the Graphite merge queue.
  • Jan 8, 3:46 AM UTC: Merged by the Graphite merge queue.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds interactive hook graph visualizations to the plugin API documentation, showing the execution order of build hooks and output generation hooks. This improves the developer experience by providing visual representations similar to Rollup's documentation.

  • Implements a custom markdown plugin to render DOT graphs using Graphviz
  • Adds comprehensive hook flow diagrams for both build and output generation phases
  • Includes light/dark mode support with automatic theme switching

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
pnpm-lock.yaml Adds @hpcc-js/wasm-graphviz and @types/markdown-it dependencies
docs/package.json Specifies new devDependencies for Graphviz and markdown-it types
docs/apis/plugin-api.md Adds hook graph visualizations for build and output generation hooks with detailed DSL specifications
docs/.vitepress/theme/custom.css Adds CSS for light/dark mode visibility and link styling within SVG text elements
docs/.vitepress/markdown-hooks-graph.ts Implements the graph rendering plugin with DSL parser, DOT converter, and SVG generation
docs/.vitepress/config.ts Integrates the hooks graph plugin into VitePress markdown processing
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@IWANABETHATGUY
Copy link
Member

What is the meaning of parallel and sequential?
I asked because some hooks in the graph marked as parallel are actually serial, e.g.
buildStart
https://github.com/rolldown/rolldown/blob/f7695d3131edfa6a37de54ed0659db891d7fb109/crates/rolldown_plugin/src/plugin_driver/build_hooks.rs#L26-L34

@hyf0
Copy link
Member

hyf0 commented Dec 27, 2025

What is the meaning of parallel and sequential? I asked because some hooks in the graph marked as parallel are actually serial, e.g. buildStart https://github.com/rolldown/rolldown/blob/f7695d3131edfa6a37de54ed0659db891d7fb109/crates/rolldown_plugin/src/plugin_driver/build_hooks.rs#L26-L34

Yes. There's buggy behavior if we make it parallel. I think it's fine we mark sequential hooks parallel, we're expected to do that in the future and people should think it as a parallel hook.

@hyf0
Copy link
Member

hyf0 commented Dec 27, 2025

LGTM. Copilot's suggestions might make sense. Leave them to you. @sapphi-red cc

@sapphi-red sapphi-red force-pushed the 12-26-docs_apis_add_hook_graph branch from bd62358 to 595db8f Compare January 8, 2026 03:14
Copilot AI review requested due to automatic review settings January 8, 2026 03:15
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Added a graph that explains the order of the hooks and some internal process. A similar graph exists in Rollup's document.

<img width="908" height="762" alt="image" src="https://github.com/user-attachments/assets/a0326d6f-70a0-4afb-8929-fba3a3b7e58d" />
<img width="900" height="815" alt="image" src="https://github.com/user-attachments/assets/ae8c2a69-d4a4-4274-bf2d-da2b1072998b" />

https://deploy-preview-7671--rolldown-rs.netlify.app/apis/plugin-api#build-hooks

The generation code is fragile, but I think it's fine as we only use it for the graph generation.
@graphite-app graphite-app bot force-pushed the 12-26-docs_apis_add_hook_graph branch from 14f10e0 to 8d75e08 Compare January 8, 2026 03:34
@graphite-app graphite-app bot merged commit 8d75e08 into main Jan 8, 2026
32 checks passed
@graphite-app graphite-app bot deleted the 12-26-docs_apis_add_hook_graph branch January 8, 2026 03:46
This was referenced Jan 14, 2026
shulaoda added a commit that referenced this pull request Jan 14, 2026
## [1.0.0-beta.60] - 2026-01-14

### 💥 BREAKING CHANGES

- tsconfig: enable auto-discovery by default (#7817) by @shulaoda

### 🚀 Features

- distinguish transformer diagnostics from parse errors (#7872) by @shulaoda
- emit transformer warnings instead of ignoring them (#7850) by @shulaoda
- node: add `output.codeSplitting` option and deprecate `output.advancedChunks` (#7855) by @hyf0
- nativeMagicString reset (#7828) by @IWANABETHATGUY
- nativeMagicString lastChar (#7819) by @IWANABETHATGUY
- dev/lazy: inject lazy compilation runtime automatically (#7816) by @hyf0
- nativeMagicString snip (#7818) by @IWANABETHATGUY
- nativeMagicString construct with options (#7814) by @IWANABETHATGUY
- nativeMagicString clone (#7813) by @IWANABETHATGUY
- nativeMagicString `insert` (#7812) by @IWANABETHATGUY
- nativeMagicString `slice` (#7807) by @IWANABETHATGUY
- nativeMagicString trim methods (#7800) by @IWANABETHATGUY
- make closeBundle hook receive the last error (#7278) by @Copilot

### 🐛 Bug Fixes

- when package only contains export default, cjsDefault didn't resolve correctly (#7873) by @IWANABETHATGUY
- inline __name calls for default exports  (#7862) by @IWANABETHATGUY
- improve variable renaming to avoid unnecessary shadowing in nested scopes (#7859) by @IWANABETHATGUY
- use correct index when inserting keepNames statements during export default transformation (#7853) by @IWANABETHATGUY
- transform non-static dynamic imports when `dynamicImportInCjs` is `false` (#7823) by @shulaoda
- dev/lazy: should include imported and non-executed modules in the patch (#7815) by @hyf0
- set ExportsKind to Esm when json is none object literal  (#7808) by @IWANABETHATGUY
- nativeMagicString move api (#7796) by @IWANABETHATGUY
- remove unnecessary exports after merging into commong and user defined entry (#7789) by @IWANABETHATGUY
- use output.name instead of chunk.name in mixed export warning (#7788) by @Copilot

### 🚜 Refactor

- generalize ParseError to OxcError with dynamic EventKind (#7868) by @shulaoda
- rust: rename `advanced_chunks` to `manual_code_splitting` (#7856) by @hyf0
- string_wizard error hanlding (#7830) by @IWANABETHATGUY
- remove `experimental.disableLiveBindings` option (#7820) by @sapphi-red
- node/test: run fixture tests in concurrent (#7790) by @hyf0
- move ConfigExport and RolldownOptionsFunction types to define-config (#7799) by @shulaoda
- cli: validate config after resolving and improve error message (#7798) by @shulaoda

### 📚 Documentation

- rebrand (#7670) by @yyx990803
- fix incorrect default value for propertyReadSideEffects (#7847) by @Copilot
- remove options pages and redirect to reference pages (#7834) by @sapphi-red
- options: inline types to option property pages (#7831) by @sapphi-red
- options: port checks.pluginTimings content from options page to reference page (#7832) by @sapphi-red
- options: use `@linkcode` where possible (#7824) by @sapphi-red
- options: port content from options page to reference page (#7822) by @sapphi-red
- options: add descriptions for output options (#7821) by @sapphi-red
- options: add description for input options (#7802) by @sapphi-red
- options: add description for `checks.*` (#7801) by @sapphi-red
- apis: add hook graph (#7671) by @sapphi-red

### 🧪 Testing

- add all valid combination of chunk exports related test (#7851) by @IWANABETHATGUY
- enable MagicString test after api return type alignment (#7797) by @IWANABETHATGUY
- init magic-string test (#7794) by @IWANABETHATGUY

### ⚙️ Miscellaneous Tasks

- vite-tests: configure git user for rebase operation (#7875) by @shulaoda
- rolldown_binding: remove v3 native plugins (#7837) by @shulaoda
- rolldown_binding: allow crate-type as lib (#7866) by @Brooooooklyn
- README.md: adjust position and size of rolldown logo (#7861) by @hyf0
- deps: update test262 submodule for tests (#7857) by @sapphi-red
- deps: update oxc to v0.108.0 (#7845) by @renovate[bot]
- deps: update dependency oxlint to v1.39.0 (#7849) by @renovate[bot]
- deps: update dependency oxfmt to ^0.24.0 (#7844) by @renovate[bot]
- deps: update npm packages (#7841) by @renovate[bot]
- deps: update rust crates (#7839) by @renovate[bot]
- deps: update github-actions (#7840) by @renovate[bot]
- use workspace edition for all crates (#7829) by @IWANABETHATGUY
- deps: update dependency oxlint-tsgolint to v0.11.0 (#7827) by @renovate[bot]
- deps: update napi to v3.8.2 (#7810) by @renovate[bot]
- remove outdated snapshot files (#7806) by @shulaoda
- deps: update crate-ci/typos action to v1.42.0 (#7792) by @renovate[bot]

Co-authored-by: shulaoda <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants