refactor: migrate @rolldown/pluginutils package from rolldown repository#61
Merged
Merged
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Member
|
Was this marked as draft because of the lack of github actions pinning? |
Member
Author
This is because the CI hadn’t passed before. I was planning to take a look into it. |
6 tasks
@rolldown/pluginutils package from rolldown repository
shulaoda
added a commit
to rolldown/rolldown
that referenced
this pull request
May 12, 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`.
sapphi-red
approved these changes
May 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Refs rolldown/rolldown#8653. Companion PR: rolldown/rolldown#9317.
Ports
@rolldown/pluginutilsfromrolldown/rolldownso it follows its own release cadence rather than rolldown's.Why
When
@rolldown/pluginutilsshipped from the rolldown repo, everyrolldownrelease published a new pluginutils version. Plugins in this repo pin specific (often pre-release) versions, and prerelease semver semantics (^1.0.0-rc.16does not match1.0.0-rc.17) preventednode_modulesdedupe — users withrolldownplus any plugin that uses pluginutils ended up with several copies side by side.Releasing pluginutils from this repo lets it follow stable semver. Once rolldown's companion PR switches to depending on
^1.0.0, the package manager can dedupe across rolldown and any plugin author who later depends on pluginutils.Changes
packages/pluginutils/: source ported fromrolldown/rolldownatv1.0.0.tsdown(matches other packages in this repo). Output is.mjswithdist/index.mjsanddist/filter/index.mjs; tsdown auto-extracts the shared filter implementation into a single chunk so the two entries don't duplicate code.exports-consistency.test.tsdropped (the dualexports+publishConfig.exportssetup is gone — singleexportsmap now).oxlint-disable-next-line typescript/no-unsafe-type-assertionannotations added where the original casts are intentional: one workaround for microsoft/TypeScript#17002, one runtime probe on a generic.oxfmtto match repo style.scripts/release.ts: registerpluginutilsfor the existing@vitejs/release-scriptsflow. The existinggetPkgDir(packages/${pkgName.replace('plugin-', '')}) already resolves correctly for the bare name..github/workflows/publish.yml,.github/workflows/release-tag.yml: extend tag triggers topluginutils@*. The existing tag-parsing shell expression handles the bare prefix.