fix: move esbuild platform binaries to optionalDependencies - #635
Open
sanskarOH wants to merge 1 commit into
Open
fix: move esbuild platform binaries to optionalDependencies#635sanskarOH wants to merge 1 commit into
sanskarOH wants to merge 1 commit into
Conversation
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.
What changed
Moved
@esbuild/darwin-arm64and@esbuild/darwin-x64fromdependenciestooptionalDependenciesin package.json (and regenerated package-lock.json to match).Why
Fresh
npm installfails on any single-arch Mac with:npm treats platform-restricted packages as hard requirements when listed under regular
dependencies, so it aborts install rather than skipping the incompatible binary.optionalDependenciesis npm's correct mechanism for this — it installs the compatible binary and silently skips the other, which also aligns with the existingscripts/ensure-cross-arch-esbuild.mjspostinstall step that fetches the missing cross-arch binary separately.Compatibility impact
None expected. Both binaries are still declared with pinned versions; only the dependency type changed. Cross-arch packaging (electron-builder producing both Intel and Apple Silicon builds) is unaffected since
ensure-cross-arch-esbuild.mjsalready handles fetching the missing binary post-install.How I tested
npm installsucceeds cleanly on an arm64 Mac (previously failed with EBADPLATFORM)npm run buildcompletes without errors (main, renderer, and native builds all pass)npm run devlaunches the app successfully with all core features (clipboard, snippets, commands) loading correctlynode_modules/@esbuild/contains the arm64 binary after install, and confirmed lockfile correctly reflects optionalDependencies