Skip to content

Comments

refactor!: move stable plugins from experimental to rolldown/plugins#6303

Merged
shulaoda merged 1 commit intomainfrom
09-22-refactor_move_stable_plugins_from_experimental_to_rolldown_plugins
Nov 10, 2025
Merged

refactor!: move stable plugins from experimental to rolldown/plugins#6303
shulaoda merged 1 commit intomainfrom
09-22-refactor_move_stable_plugins_from_experimental_to_rolldown_plugins

Conversation

@shulaoda
Copy link
Member

@shulaoda shulaoda commented Sep 21, 2025

closes #5815

Copy link
Member Author

shulaoda commented Sep 21, 2025


How to use the Graphite Merge Queue

Add the label graphite: merge 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.

@shulaoda shulaoda changed the title refactor!: move stable plugins from experimental to rolldown/plugins refactor!: move stable plugins from experimental to rolldown/plugins Sep 21, 2025
@netlify
Copy link

netlify bot commented Sep 21, 2025

Deploy Preview for rolldown-rs ready!

Name Link
🔨 Latest commit b1d4d3d
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/69114cb7b6d63100088eb38e
😎 Deploy Preview https://deploy-preview-6303--rolldown-rs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@shulaoda shulaoda force-pushed the 09-22-refactor_move_stable_plugins_from_experimental_to_rolldown_plugins branch 2 times, most recently from 36bb5d1 to d7ba1fb Compare September 28, 2025 09:58
@socket-security
Copy link

socket-security bot commented Sep 28, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedsource-map-support@​0.5.2110010010081100
Addedsource-map@​0.7.610010010086100

View full report

@shulaoda shulaoda force-pushed the 09-22-refactor_move_stable_plugins_from_experimental_to_rolldown_plugins branch from d7ba1fb to b5ae10a Compare September 28, 2025 10:36
@shulaoda shulaoda marked this pull request as ready for review September 28, 2025 10:38
@shulaoda shulaoda force-pushed the 09-22-refactor_move_stable_plugins_from_experimental_to_rolldown_plugins branch 3 times, most recently from 2f44540 to b849281 Compare September 28, 2025 10:44
@IWANABETHATGUY IWANABETHATGUY marked this pull request as draft September 28, 2025 13:18
@IWANABETHATGUY IWANABETHATGUY added the on hold: to be discussed Waiting for team to discuss this issue label Sep 28, 2025
@shulaoda shulaoda force-pushed the 09-22-refactor_move_stable_plugins_from_experimental_to_rolldown_plugins branch from b849281 to b1d4d3d Compare November 10, 2025 02:23
@shulaoda shulaoda removed the on hold: to be discussed Waiting for team to discuss this issue label Nov 10, 2025
@shulaoda shulaoda marked this pull request as ready for review November 10, 2025 02:24
@shulaoda shulaoda merged commit aebb04b into main Nov 10, 2025
26 checks passed
@shulaoda shulaoda deleted the 09-22-refactor_move_stable_plugins_from_experimental_to_rolldown_plugins branch November 10, 2025 02:51
shulaoda added a commit that referenced this pull request Nov 10, 2025
## [1.0.0-beta.48] - 2025-11-10

:boom: Breaking Changes

- `this.emitFile` now respects `chunkFileNames` for chunk type
```js
// rolldown.config.js
export default {
  output: {
    chunkFileNames: 'chunks/[name]-[hash].js'
  }
}

// In plugin
this.emitFile({
  type: 'chunk',
  id: './my-module.js'
});

// Before: Output might not follow chunkFileNames pattern
// After: Output follows 'chunks/[name]-[hash].js' pattern
```

- Deprecated top-level options removed
  - `define` → `transform.define`
  - `inject` → `transform.inject`
  - `dropLabels` → `transform.dropLabels`
  - `keepNames` → `output.keepNames`
  - `profilerNames` → `output.generatedCode.profilerNames`

- Stable plugins moved from experimental
```js
// Before
import { replacePlugin, esmExternalRequirePlugin } from 'rolldown/experimental';

// After
import { replacePlugin, esmExternalRequirePlugin } from 'rolldown/plugins';
```

- `RolldownBuild#scan` is removed, now only available from `rolldown/experimental`
```js
// Before: scan was a method on RolldownBuild
const build = await rolldown(config);
await build.scan();

// After: import scan from rolldown/experimental
import { scan } from 'rolldown/experimental';
await scan(config);
```

### 💥 BREAKING CHANGES

- `this.emitFile` does not respect `chunkFileNames` (#6868) by @Copilot
- remove deprecated top-level `dropLabels` option (#6915) by @sapphi-red
- remove deprecated top-level `keepNames` option (#6914) by @sapphi-red
- remove deprecated top-level `profilerNames` option (#6913) by @sapphi-red
- remove deprecated top-level `define` and `inject` options (#6912) by @sapphi-red
- move stable plugins from experimental to `rolldown/plugins` (#6303) by @shulaoda
- node: remove experimental `RolldownBuild#scan`, only expose it from `rolldown/experimental` (#6889) by @hyf0

### 🚀 Features

- add side-effect detection for global constructors with primitive arguments (#6898) by @IWANABETHATGUY
- rust: use `BundleMode` to handle incremental build exhaustively (#6894) by @hyf0
- detect side-effect-free global function calls (#6897) by @IWANABETHATGUY
- expose `parseSync` / `parseAsync` function (#6866) by @sapphi-red
- skip `__toESM` helper when only named imports are used from CJS modules (#6850) by @Copilot
- rolldown_binding: expose `htmlInlineProxyPlugin` (#6856) by @shulaoda
- rolldown_plugin_html_inline_proxy: align `load` hook logic (#6855) by @shulaoda
- rolldown_plugin_html_inline_proxy: align `resolveId` hook logic (#6854) by @shulaoda
- rolldown_plugin_html_inline_proxy: initialize (#6853) by @shulaoda

### 🐛 Bug Fixes

- cli: support nested options in CLI properly (#6911) by @sapphi-red
- debug: ensure injecting `hook_resolve_id_trigger` correctly (#6908) by @hyf0
- use chunk-specific exports for entry module export detection (#6904) by @IWANABETHATGUY
- debug: ensure build get injected and add tests (#6896) by @hyf0
- error: return friendly error for bundler already closed scenario (#6878) by @hyf0
- improve dynamic entry processing with iterative approach (#6869) by @IWANABETHATGUY
- handle tsconfig option resolve error (#6871) by @sapphi-red
- handle error when creating output chunk directories (#6870) by @sapphi-red
- node: `NormalizedOutputOptionsImpl` and `NormalizedInputOptionsImpl` enumerable (#6861) by @hyf0
- node: keys of `RolldownOutput` should be enumerable (#6852) by @Copilot

### 🚜 Refactor

- rust: rename `BundleContext` to `BundleHandle` (#6893) by @hyf0
- rust: rename `build_span` to `bundle_span` (#6892) by @hyf0
- rust: introduce `PluginDriverFactory` to manage creation of `PluginDriver` (#6891) by @hyf0
- crates/rolldown_binding: remove useless `BindingBundlerImpl` (#6888) by @hyf0
- crates/rolldown_binding: rename `Bundler` to `ClassicBundler` and clarify the purpose (#6887) by @hyf0
- rust: rename `BuildFactory/Build` to `BundleFactory/Bundle` (#6886) by @hyf0
- rust: tweak incremental build related methods of `Bundler` (#6884) by @hyf0
- rust: manage build via `BuildFactory` for `Bundler` (#6883) by @hyf0
- node: implement a new `Bundler` that satisfy the usage of `RolldownBuild` (#6877) by @hyf0
- node: remove useless `nonEnumerable` decorator (#6862) by @hyf0

### 📚 Documentation

- add documentation for native replace plugin (#6315) by @shulaoda
- in-depth/directives: expand description of how directives are handled (#6882) by @sapphi-red
- in-depth/bundling-cjs: clarify the condition of `default` export interop (#6875) by @sapphi-red
- add troubleshooting section for `this` in exported functions (#6865) by @sapphi-red
- update prebuilt binaries list based on Node 24 platform support tier (#6864) by @sapphi-red
- remove unsupported [ext] placeholder from entryFileNames and chunkFileNames (#6859) by @Copilot

### ⚡ Performance

- rolldown: improve sourcemap chain processing (#6858) by @Brooooooklyn

### 🧪 Testing

- add test case for issue #6881 with scientific notation (#6906) by @IWANABETHATGUY

### ⚙️ Miscellaneous Tasks

- deps: update npm packages (#6918) by @renovate[bot]
- deps: update dependency rolldown-plugin-dts to v0.17.5 (#6917) by @renovate[bot]
- deps: lock file maintenance (#6907) by @renovate[bot]
- deps: update rust crates (#6905) by @renovate[bot]
- deps: update npm packages (#6903) by @renovate[bot]
- deps: update github-actions (#6902) by @renovate[bot]
- deps: update `oxc_resolver` and `oxc_resolver_napi` (#6901) by @shulaoda
- deps: update dependency rolldown-plugin-dts to v0.17.4 (#6895) by @renovate[bot]
- deps: update dependency tsdown to v0.16.1 (#6885) by @renovate[bot]
- deps: upgrade napi to remove linker args that skip missing symbols (#6867) by @Boshen

Co-authored-by: shulaoda <[email protected]>
@hyf0 hyf0 requested a review from Copilot November 11, 2025 06:47
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 refactors the package structure by promoting stable plugins (replacePlugin and esmExternalRequirePlugin) from the experimental exports (rolldown/experimental) to a new stable plugin exports path (rolldown/plugins). This is a breaking change that better reflects the maturity of these plugins.

Key changes:

  • Created new rolldown/plugins export path with dedicated entry file
  • Moved replacePlugin and esmExternalRequirePlugin from experimental to stable exports
  • Updated all test files and documentation to use the new import path

Reviewed Changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated no comments.

Show a summary per file
File Description
packages/rolldown/src/plugins-index.ts New entry file exporting stable plugins (esmExternalRequirePlugin and replacePlugin)
packages/rolldown/src/experimental-index.ts Removed esmExternalRequirePlugin and replacePlugin exports from experimental
packages/rolldown/package.json Added ./plugins export path configuration
packages/rolldown/build.ts Added plugins-index to build inputs
packages/rolldown/tests/fixtures/builtin-plugin/replace/issue-5817/_config.ts Updated import path from rolldown/experimental to rolldown/plugins
packages/rolldown/tests/fixtures/builtin-plugin/replace/basic/_config.ts Updated import path from rolldown/experimental to rolldown/plugins
packages/rolldown/tests/cli/fixtures/cjs-config-with-replace-plugin/rolldown.config.cjs Updated require path from rolldown/experimental to rolldown/plugins
docs/builtin-plugins/replace.md Updated documentation to reference rolldown/plugins instead of rolldown/experimental
docs/builtin-plugins/esm-external-require.md Updated import example to use rolldown/plugins
Comments suppressed due to low confidence (1)

docs/builtin-plugins/esm-external-require.md:18

  • The description text still references 'experimental exports', but the code example below correctly uses 'rolldown/plugins'. Update this line to say 'plugins exports' to match the actual import path.
Import and use the plugin from Rolldown's experimental exports:

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

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.

Move stable vite plugin from rolldown/experimental to rolldown/plugins

3 participants