Skip to content

chore: migrate @rolldown/pluginutils to rolldown/plugins#9317

Merged
shulaoda merged 6 commits into
mainfrom
05-07-chore_migrate_rolldown_pluginutils_to_rolldown_plugins
May 12, 2026
Merged

chore: migrate @rolldown/pluginutils to rolldown/plugins#9317
shulaoda merged 6 commits into
mainfrom
05-07-chore_migrate_rolldown_pluginutils_to_rolldown_plugins

Conversation

@shulaoda

@shulaoda shulaoda commented May 7, 2026

Copy link
Copy Markdown
Member

PR description

Closes #8653.

@rolldown/pluginutils has been moved to https://github.com/rolldown/plugins so it can be released independently from rolldown. Companion PR: rolldown/plugins#61.

Why

Previously @rolldown/pluginutils shared rolldown's release cadence — every rolldown publish (1.0.0-beta.531.0.0-rc.181.0.0) produced a new pluginutils version. Because pnpm rewrites workspace:* to an exact version on publish and prerelease semver does not match across pre-releases (^1.0.0-rc.16 does not match 1.0.0-rc.17), every plugin pinned to an older rc forced an extra copy into node_modules. Users typically saw 3–4 copies of @rolldown/pluginutils resolved side by side.

Decoupling the release cadence and depending on ^1.0.0 lets pnpm/npm dedupe across rolldown and any plugin that depends on pluginutils.

Changes

  • packages/rolldown/package.json: dependency on @rolldown/pluginutils switched from workspace:* to ^1.0.0.
  • packages/pluginutils/: removed (source now lives in rolldown/plugins).
  • Justfile: dropped the build-pluginutils target and removed it as a prereq from build, build-rolldown, build-rolldown-wasi, build-rolldown-release, build-browser, build-browser-release.
  • .github/workflows/:
    • ci.yml: removed the pluginutils-changes paths-filter and the pluginutils-test job; removed Build @rolldown/pluginutils steps in node-validation and docs-validation.
    • publish-to-npm.yml: removed the pluginutils artifact download.
    • reusable-release-build.yml: removed the build-rolldown-pluginutils job and the dependent download steps in build-node-packages / build-rolldown-browser.
    • reusable-native-build.yml: dropped packages/pluginutils/dist from the artifact upload path.
    • publish-to-pkg.pr.new.yml: removed the pluginutils artifact download and dropped ./packages/pluginutils from the pkg-pr-new publish list.
  • scripts/misc/published-package-check.mjs: removed packages/pluginutils from packagesNeedToPublish.

@socket-security

socket-security Bot commented May 7, 2026

Copy link
Copy Markdown

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

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​@​rolldown/​pluginutils@​1.0.01001009699100

View full report

@netlify

netlify Bot commented May 7, 2026

Copy link
Copy Markdown

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit 3dac2c0
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/6a038a295bc1440008252ac5

@shulaoda shulaoda force-pushed the 05-07-chore_migrate_rolldown_pluginutils_to_rolldown_plugins branch from ca21f76 to a755333 Compare May 12, 2026 10:54
Comment thread packages/rolldown/package.json Outdated
@shulaoda shulaoda requested a review from sapphi-red May 12, 2026 10:59
@shulaoda shulaoda marked this pull request as ready for review May 12, 2026 10:59
@shulaoda shulaoda marked this pull request as draft May 12, 2026 11:18
@shulaoda shulaoda marked this pull request as ready for review May 12, 2026 12:21
@shulaoda shulaoda force-pushed the 05-07-chore_migrate_rolldown_pluginutils_to_rolldown_plugins branch from 71abf5e to 5d7da6d Compare May 12, 2026 12:57
@sapphi-red

Copy link
Copy Markdown
Member

cc @rolldown/rolldown so that you are aware

@shulaoda shulaoda merged commit 9ba2e73 into main May 12, 2026
51 of 52 checks passed
@shulaoda shulaoda deleted the 05-07-chore_migrate_rolldown_pluginutils_to_rolldown_plugins branch May 12, 2026 20:23
@rolldown-guard rolldown-guard Bot mentioned this pull request May 13, 2026
shulaoda added a commit that referenced this pull request May 13, 2026
## [1.0.1] - 2026-05-13

### 🚀 Features

- experimental/lazy-barrel: advice on oversized barrel modules (#9236) by @shulaoda
- rolldown: inline optional-chain enum access (#9379) by @Dunqing
- chunk-optimization: dedupe already-loaded dynamic deps (#9305) by @IWANABETHATGUY
- binding: call moduleParsed hook in ParallelJsPlugin (#9318) by @jaehafe

### 🐛 Bug Fixes

- transform: enable `enum_eval` for `transformSync` and vite TS transform (#9325) by @Dunqing
- error: remove severity prefix from diagnostic messages (#9262) by @Kyujenius
- deps: pin pnpm to 10.23.0 to work around catalog mismatch on Netlify (#9364) by @shulaoda
- ci: pin mimalloc-safe to 0.1.58 (#9361) by @shulaoda
- dev/lazy: fix exports of lazy requests in lazy chunks (#9249) by @h-a-n-a
- rolldown_plugin_vite_resolve: handle errors in `resolveSubpathImports` callback (#9355) by @sapphi-red
- rolldown_plugin_lazy_compilation: use loadExports for fetched proxy to preserve original export names (#9132) by @h-a-n-a
- common: include offending index in HybridIndexVec panic message (#9296) by @SAY-5

### 🚜 Refactor

- ecmascript: extract semantic_builder_for_transform helper (#9326) by @Dunqing
- test: extract reusable static-import-cycle helper (#9332) by @IWANABETHATGUY

### 📚 Documentation

- clarify scope of `topLevelVar` (#9380) by @IWANABETHATGUY
- meta/design: add ast-mutation design doc (#9338) by @hyf0
- feat: add ai policy in contribution guide (#9315) by @mdong1909

### ⚡ Performance

- binding: enable mimalloc v3 to reduce idle memory (#9349) by @shulaoda

### 🧪 Testing

- mcs: cover require() in `$initial` group (#9376) by @hyf0
- add regression for CJS facade chunk merge into entry (#9351) by @IWANABETHATGUY

### ⚙️ Miscellaneous Tasks

- switch prepare-release to manual dispatch with version input (#9383) by @shulaoda
- migrate `@rolldown/pluginutils` to `rolldown/plugins` (#9317) by @shulaoda
- deps: pin libmimalloc-sys2 to 0.1.54 (#9372) by @shulaoda
- replace `igorskyflyer/action-readfile` with `cat` (#9369) by @sapphi-red
- deps: update test262 submodule for tests (#9371) by @rolldown-guard[bot]
- use app token for test dep update PRs (#9368) by @sapphi-red
- replace some actions with gh commands (#9367) by @sapphi-red
- replace action-semantic-pull-request with inline regex (#9366) by @sapphi-red
- remove pull_request_target workflows (#9188) by @Boshen
- deps: upgrade oxc to 0.130.0 (#9360) by @shulaoda
- deps: update github actions (major) (#9348) by @renovate[bot]
- deps: update github actions (#9341) by @renovate[bot]
- deps: update rust crates (#9344) by @renovate[bot]
- deps: update crate-ci/typos action to v1.46.1 (#9357) by @renovate[bot]
- deps: update npm packages (#9343) by @renovate[bot]
- deps: update pnpm to v10.33.4 (#9347) by @renovate[bot]
- deps: update dependency rolldown-plugin-dts to ^0.25.0 (#9346) by @renovate[bot]
- .claude: add rolldown-repl encoder, rename decode skill (#9352) by @IWANABETHATGUY
- deps: update crate-ci/typos action to v1.46.0 (#9345) by @renovate[bot]
- deps: update napi to v3.8.6 (#9342) by @renovate[bot]
- deps: update dependency vite-plus to v0.1.20 (#9340) by @renovate[bot]
- enable rollup chunking-form test (#9335) by @IWANABETHATGUY
- typo: fix typo in watcher options comment (#9324) by @thescripted

### ❤️ New Contributors

* @Kyujenius made their first contribution in [#9262](#9262)
* @SAY-5 made their first contribution in [#9296](#9296)
* @thescripted made their first contribution in [#9324](#9324)

Co-authored-by: shulaoda <[email protected]>
Boshen added a commit that referenced this pull request May 16, 2026
Closes #8579.

Restores the WASI build and test pipeline that was removed in #8580
because the prior version was effectively a no-op:
the Node Test and Rollup Test steps had `if: false` (added in #6154
but never enabled), and the Windows matrix entry only ran a step that
was itself skipped on Windows.

This version:
- Drops the OS matrix to ubuntu-latest only.
- Enables Node Test and Rollup Test, run with `NAPI_RS_FORCE_WASI=error`
  so a missing WASI binding hard-fails instead of falling back to native.
- Modernizes the workflows to use `taiki-e/checkout-action`, `setup-vp`,
  and `vp run --filter` to match `reusable-node-test.yml`.
- Drops `packages/pluginutils/dist` from the artifact upload, since
  `@rolldown/pluginutils` was migrated out in #9317.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
IWANABETHATGUY pushed a commit that referenced this pull request May 18, 2026
## PR description

Closes #8653.

`@rolldown/pluginutils` has been moved to https://github.com/rolldown/plugins so it can be released independently from `rolldown`. Companion PR: rolldown/plugins#61.

### Why

Previously `@rolldown/pluginutils` shared rolldown's release cadence — every rolldown publish (`1.0.0-beta.53` … `1.0.0-rc.18` … `1.0.0`) produced a new pluginutils version. Because pnpm rewrites `workspace:*` to an **exact** version on publish and prerelease semver does not match across pre-releases (`^1.0.0-rc.16` does **not** match `1.0.0-rc.17`), every plugin pinned to an older rc forced an extra copy into `node_modules`. Users typically saw 3–4 copies of `@rolldown/pluginutils` resolved side by side.

Decoupling the release cadence and depending on `^1.0.0` lets pnpm/npm dedupe across rolldown and any plugin that depends on pluginutils.

### Changes

- `packages/rolldown/package.json`: dependency on `@rolldown/pluginutils` switched from `workspace:*` to `^1.0.0`.
- `packages/pluginutils/`: removed (source now lives in `rolldown/plugins`).
- `Justfile`: dropped the `build-pluginutils` target and removed it as a prereq from `build`, `build-rolldown`, `build-rolldown-wasi`, `build-rolldown-release`, `build-browser`, `build-browser-release`.
- `.github/workflows/`:
  - `ci.yml`: removed the `pluginutils-changes` paths-filter and the `pluginutils-test` job; removed `Build @rolldown/pluginutils` steps in `node-validation` and `docs-validation`.
  - `publish-to-npm.yml`: removed the pluginutils artifact download.
  - `reusable-release-build.yml`: removed the `build-rolldown-pluginutils` job and the dependent download steps in `build-node-packages` / `build-rolldown-browser`.
  - `reusable-native-build.yml`: dropped `packages/pluginutils/dist` from the artifact upload path.
  - `publish-to-pkg.pr.new.yml`: removed the pluginutils artifact download and dropped `./packages/pluginutils` from the `pkg-pr-new` publish list.
- `scripts/misc/published-package-check.mjs`: removed `packages/pluginutils` from `packagesNeedToPublish`.
IWANABETHATGUY pushed a commit that referenced this pull request May 18, 2026
## [1.0.1] - 2026-05-13

### 🚀 Features

- experimental/lazy-barrel: advice on oversized barrel modules (#9236) by @shulaoda
- rolldown: inline optional-chain enum access (#9379) by @Dunqing
- chunk-optimization: dedupe already-loaded dynamic deps (#9305) by @IWANABETHATGUY
- binding: call moduleParsed hook in ParallelJsPlugin (#9318) by @jaehafe

### 🐛 Bug Fixes

- transform: enable `enum_eval` for `transformSync` and vite TS transform (#9325) by @Dunqing
- error: remove severity prefix from diagnostic messages (#9262) by @Kyujenius
- deps: pin pnpm to 10.23.0 to work around catalog mismatch on Netlify (#9364) by @shulaoda
- ci: pin mimalloc-safe to 0.1.58 (#9361) by @shulaoda
- dev/lazy: fix exports of lazy requests in lazy chunks (#9249) by @h-a-n-a
- rolldown_plugin_vite_resolve: handle errors in `resolveSubpathImports` callback (#9355) by @sapphi-red
- rolldown_plugin_lazy_compilation: use loadExports for fetched proxy to preserve original export names (#9132) by @h-a-n-a
- common: include offending index in HybridIndexVec panic message (#9296) by @SAY-5

### 🚜 Refactor

- ecmascript: extract semantic_builder_for_transform helper (#9326) by @Dunqing
- test: extract reusable static-import-cycle helper (#9332) by @IWANABETHATGUY

### 📚 Documentation

- clarify scope of `topLevelVar` (#9380) by @IWANABETHATGUY
- meta/design: add ast-mutation design doc (#9338) by @hyf0
- feat: add ai policy in contribution guide (#9315) by @mdong1909

### ⚡ Performance

- binding: enable mimalloc v3 to reduce idle memory (#9349) by @shulaoda

### 🧪 Testing

- mcs: cover require() in `$initial` group (#9376) by @hyf0
- add regression for CJS facade chunk merge into entry (#9351) by @IWANABETHATGUY

### ⚙️ Miscellaneous Tasks

- switch prepare-release to manual dispatch with version input (#9383) by @shulaoda
- migrate `@rolldown/pluginutils` to `rolldown/plugins` (#9317) by @shulaoda
- deps: pin libmimalloc-sys2 to 0.1.54 (#9372) by @shulaoda
- replace `igorskyflyer/action-readfile` with `cat` (#9369) by @sapphi-red
- deps: update test262 submodule for tests (#9371) by @rolldown-guard[bot]
- use app token for test dep update PRs (#9368) by @sapphi-red
- replace some actions with gh commands (#9367) by @sapphi-red
- replace action-semantic-pull-request with inline regex (#9366) by @sapphi-red
- remove pull_request_target workflows (#9188) by @Boshen
- deps: upgrade oxc to 0.130.0 (#9360) by @shulaoda
- deps: update github actions (major) (#9348) by @renovate[bot]
- deps: update github actions (#9341) by @renovate[bot]
- deps: update rust crates (#9344) by @renovate[bot]
- deps: update crate-ci/typos action to v1.46.1 (#9357) by @renovate[bot]
- deps: update npm packages (#9343) by @renovate[bot]
- deps: update pnpm to v10.33.4 (#9347) by @renovate[bot]
- deps: update dependency rolldown-plugin-dts to ^0.25.0 (#9346) by @renovate[bot]
- .claude: add rolldown-repl encoder, rename decode skill (#9352) by @IWANABETHATGUY
- deps: update crate-ci/typos action to v1.46.0 (#9345) by @renovate[bot]
- deps: update napi to v3.8.6 (#9342) by @renovate[bot]
- deps: update dependency vite-plus to v0.1.20 (#9340) by @renovate[bot]
- enable rollup chunking-form test (#9335) by @IWANABETHATGUY
- typo: fix typo in watcher options comment (#9324) by @thescripted

### ❤️ New Contributors

* @Kyujenius made their first contribution in [#9262](#9262)
* @SAY-5 made their first contribution in [#9296](#9296)
* @thescripted made their first contribution in [#9324](#9324)

Co-authored-by: shulaoda <[email protected]>
fengmk2 pushed a commit to voidzero-dev/vite-plus that referenced this pull request May 22, 2026
## Summary
- `@rolldown/pluginutils` has been extracted from the rolldown repo into
a standalone package (rolldown/rolldown#9317), so it is no longer a
workspace member.
- Remove the `vp run @rolldown/pluginutils#build` step from the
`build:src` task in `vite.config.ts` to keep it aligned with the root
`pnpm build` script.
fengmk2 added a commit to voidzero-dev/vite-plus that referenced this pull request May 22, 2026
## Summary

- `@rolldown/pluginutils` was extracted out of the rolldown repo in
rolldown/rolldown#9317 and is now consumed as a standalone npm
dependency, so `packages/core/BUNDLING.md` no longer matches reality.
- Update the `Overview` and `Source Directories` tables, plus the `Step
1` input path, to point to
`rolldown/packages/rolldown/node_modules/@rolldown/pluginutils` — the
actual path resolved by `packages/core/build.ts:33-43`.
- Change the `Relation` column for `@rolldown/pluginutils` from `Git
submodule` to `npm dependency` to reflect the new setup.

Co-authored-by: MK (fengmk2) <[email protected]>
Boshen added a commit that referenced this pull request May 24, 2026
Closes #8579.

Restores the WASI build and test pipeline that was removed in #8580
because the prior version was effectively a no-op:
the Node Test and Rollup Test steps had `if: false` (added in #6154
but never enabled), and the Windows matrix entry only ran a step that
was itself skipped on Windows.

This version:
- Drops the OS matrix to ubuntu-latest only.
- Enables Node Test and Rollup Test, run with `NAPI_RS_FORCE_WASI=error`
  so a missing WASI binding hard-fails instead of falling back to native.
- Modernizes the workflows to use `taiki-e/checkout-action`, `setup-vp`,
  and `vp run --filter` to match `reusable-node-test.yml`.
- Drops `packages/pluginutils/dist` from the artifact upload, since
  `@rolldown/pluginutils` was migrated out in #9317.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Boshen added a commit that referenced this pull request May 27, 2026
Closes #8579.

Restores the WASI build and test pipeline that was removed in #8580
because the prior version was effectively a no-op:
the Node Test and Rollup Test steps had `if: false` (added in #6154
but never enabled), and the Windows matrix entry only ran a step that
was itself skipped on Windows.

This version:
- Drops the OS matrix to ubuntu-latest only.
- Enables Node Test and Rollup Test, run with `NAPI_RS_FORCE_WASI=error`
  so a missing WASI binding hard-fails instead of falling back to native.
- Modernizes the workflows to use `taiki-e/checkout-action`, `setup-vp`,
  and `vp run --filter` to match `reusable-node-test.yml`.
- Drops `packages/pluginutils/dist` from the artifact upload, since
  `@rolldown/pluginutils` was migrated out in #9317.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Boshen added a commit that referenced this pull request May 27, 2026
## Summary

Closes #8579.

Restores the WASI build and test pipeline that was removed in #8580
because the prior version was effectively a no-op: the `Node Test` and
`Rollup Test` steps had `if: false` (added in #6154 but never enabled),
and the Windows matrix entry only ran a step that was itself skipped on
Windows.

This PR:

- **Drops the OS matrix to `ubuntu-latest` only.** Per maintainer
comment on a related issue ("linux only is ok"); also removes the
Windows no-op.
- **Enables `Node Test`, `Rollup Test`, and `Build Examples`,** run with
`NAPI_RS_FORCE_WASI=error` so a missing WASI binding hard-fails
(`packages/rolldown/src/binding.cjs:554`) instead of silently falling
back to native.
- **Drops `packages/pluginutils/dist` from the artifact upload,** since
`@rolldown/pluginutils` was migrated out in #9317.

### Why `pnpm` rather than `vp` in the test steps

`vp` is itself a napi-rs binary, and its loader also respects
`NAPI_RS_FORCE_WASI`. Setting that env at the step level breaks `vp` at
startup before it can spawn the test runner, so the three env-bearing
steps use `pnpm` directly. `corepack enable` (with `sudo` for
`/usr/local/bin` shim writes) puts `pnpm` on PATH.

### Known limitation — `continue-on-error: true` on the test steps

`NAPI_RS_FORCE_WASI=error` applies process-wide. The transitive
`[email protected]` (pulled in by vitest/vite-plus) inherits the env
and tries to load **its** WASI binding —
`@rolldown/[email protected]`, a published optional dep
that pnpm filters out on linux-x64 hosts. Attempts to force-install it
via `--config.supported-architectures` (both as CLI flags and via
`.npmrc`) didn't take effect because setup-vp's cached install state is
restored before resolution re-runs, and `Lockfile is up to date,
resolution step is skipped`.

Marking these three steps `continue-on-error: true` for now so the rest
of the infra lands. The build/artifact + binding loader smoke tests
still gate the job. Fixing the transitive-binding issue is left as a
**follow-up**.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.7 (1M context) <[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.

Separate @rolldown/pluginutils release from Rolldown's release

2 participants