FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

fix(core): resolve Rolldown bindings via platform packages by jong-kyung · Pull Request #2067 · voidzero-dev/vite-plus · GitHub

fix(core): resolve Rolldown bindings via platform packages - #2067

Closed
jong-kyung wants to merge 32 commits into
voidzero-dev:mainfrom
jong-kyung:fix/core-platform-binding-resolution
Closed

jong-kyung wants to merge 32 commits into
voidzero-dev:mainfrom
jong-kyung:fix/core-platform-binding-resolution

Conversation

Copy link
Copy Markdown
Collaborator

Summary

Fixes #2054.

This updates @voidzero-dev/vite-plus-core release builds so bundled Rolldown no longer resolves native bindings through vite-plus/binding.

Instead, supported Rolldown native package specifiers are rewritten from:

@rolldown/binding-<platform>

to the matching Vite+ native platform package:

@voidzero-dev/vite-plus-<platform>

vite-plus/binding remains available as a compatibility export.

Why

With pnpm enable-global-virtual-store, core can run from pnpm's global store realpath. In that layout, core cannot
reliably resolve undeclared vite-plus/binding.

This avoids the circular package graph:

vite-plus -> @voidzero-dev/vite-plus-core -> vite-plus/binding

and makes core's native binding resolution use declared optional dependencies instead.

Changes

  • Document the new native binding resolution model in:
    • packages/cli/BUNDLING.md
    • packages/core/BUNDLING.md
  • Map CLI napi.targets to Vite+ native platform package names
  • Add the generated Vite+ native platform packages to core optionalDependencies
  • Rewrite only supported Rolldown native binding specifiers to declared Vite+ platform packages
    • unsupported/fallback Rolldown bindings such as WASI are left unchanged
  • Add tests for:
    • NAPI target -> platform package mapping
    • core optional dependency metadata
  • Pin core native optional dependency versions during release after native addons are published

netlify Bot commented Jul 6, 2026
edited
Loading

Copy link
Copy Markdown

Deploy Preview for viteplus-preview canceled.

Name Link
🔨 Latest commit f5f08a0
🔍 Latest deploy log https://app.netlify.com/projects/viteplus-preview/deploys/6a59e291cc164400088f61d1

jong-kyung self-assigned this Jul 6, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 33d915dd59

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

}
},
"optionalDependencies": {
"@voidzero-dev/vite-plus-darwin-arm64": "0.2.2",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Keep native optional deps in the version bump

When the release prep workflow bumps versions, it only rewrites the top-level version field in packages/core/package.json (.github/workflows/prepare_release.yml:55-56), leaving these newly added native optional dependency pins at the previous release. The new artifact test also requires each Vite+ native optional dependency to equal corePkgJson.version (packages/core/__tests__/build-artifacts.spec.ts:57), so the next release: v... PR will fail as soon as core is bumped unless the bump path updates these pins too.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I'm not sure what the preferred fix is for this release-flow issue. I avoided updating these pins in prepare_release.yml because the new native packages are not published yet at that point, so resolving exact versions during release prep seemed unsafe.

@fengmk2 Could you advise which approach you'd prefer?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

It shouldn't be added here. The napi binary dependency is automatically added by napi-rs/cli during the publishing process in packages/cli/publish-native-addons.ts, so it doesn't need to be depended on at the code level. However, currently it doesn't support automatically adding this dependency configuration to 2 packages. Need @Brooooooklyn to help review whether our approach is correct. I have a feeling something is wrong.

Copy link
Copy Markdown
Collaborator Author

@codex review

chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9a4307d07a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/core/build.ts Outdated
Comment thread packages/core/build.ts

Copy link
Copy Markdown
Collaborator Author

@codex review

chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ed475572ba

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/core/build.ts

Copy link
Copy Markdown
Collaborator Author

@codex review

chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cf5b76793b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/core/build.ts
jong-kyung force-pushed the fix/core-platform-binding-resolution branch from feff11d to 9868852 Compare July 6, 2026 12:40

Copy link
Copy Markdown
Collaborator Author

@codex review

chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 986885258c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/core/build.ts
Comment on lines 803 to +805
};

const { code, errors } = await format(destPkgPath, JSON.stringify(destPkg, null, 2) + '\n', {
destPkg.optionalDependencies = { ...destPkg.optionalDependencies };

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Update native deps during version bumps

When the next release PR is created, .github/workflows/prepare_release.yml only bumps the top-level version fields, leaving these newly hard-coded native optional dependency specs at the previous release. The CI build then runs mergePackageJson(), which rewrites them to destPkg.version, so the post-build dirty-tree check in .github/workflows/ci.yml fails; after merge, main would also keep @voidzero-dev/vite-plus-core out of sync with the native packages until the ephemeral publish step patches it. Please update the release-prep path (or stop source builds from rewriting these specs) so the committed package.json stays consistent across version bumps.

Useful? React with 👍 / 👎.

jong-kyung marked this pull request as ready for review July 7, 2026 02:36
jong-kyung marked this pull request as draft July 7, 2026 02:36
jong-kyung marked this pull request as ready for review July 7, 2026 04:57

Copy link
Copy Markdown
Collaborator Author

@codex review

chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fcfaca56bc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/core/build.ts

fengmk2 commented Jul 7, 2026

Copy link
Copy Markdown
Member

This change is a bit complex, so I won't merge it in this week's release. I'll review it after today's release is done.

Copy link
Copy Markdown
Collaborator Author

This change is a bit complex, so I won't merge it in this week's release. I'll review it after today's release is done.

I agree. I’ll review and address your feedback when you take a look later.

fengmk2 commented Aug 3, 2026

Copy link
Copy Markdown
Member

@jong-kyung Let me take over this issue, I need to write a RFC first.

fengmk2 closed this Aug 3, 2026
jong-kyung deleted the fix/core-platform-binding-resolution branch August 3, 2026 22:24
fengmk2 added a commit that referenced this pull request Aug 4, 2026
Release-built core resolves bundled Rolldown's native binding through
vite-plus/binding, an export of a package core never declares, which
breaks pnpm enable-global-virtual-store, Yarn PnP, and standalone core
installs. The RFC keeps the per-platform rewrite direction from PR #2067
but moves the platform optionalDependencies pins out of the committed
package.json and into the publish pipeline, mirroring how napi-rs
injects the same packages into vite-plus.
fengmk2 added a commit that referenced this pull request Aug 4, 2026
Release-built core resolves bundled Rolldown's native binding through
vite-plus/binding, an export of a package core never declares, which
breaks pnpm enable-global-virtual-store, Yarn PnP, and standalone core
installs. The RFC keeps the per-platform rewrite direction from PR #2067
but moves the platform optionalDependencies pins out of the committed
package.json and into the publish pipeline, mirroring how napi-rs
injects the same packages into vite-plus.
fengmk2 added a commit that referenced this pull request Aug 4, 2026
Release-built core resolves bundled Rolldown's native binding through
vite-plus/binding, an export of a package core never declares, which
breaks pnpm enable-global-virtual-store, Yarn PnP, and standalone core
installs. The RFC keeps the per-platform rewrite direction from PR #2067
but moves the platform optionalDependencies pins out of the committed
package.json and into the publish pipeline, mirroring how napi-rs
injects the same packages into vite-plus.
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Avoid circular binding resolution between vite-plus-core and vite-plus

2 participants


Back | FazBrowse Home | New Git URL