feat: standalone binary distributions for wgc
#794
Closed
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.
Motivation and Context
In enterprise settings, installing a cli via npm globally isnt always possible. Potential blockers include:
Generally it is industry standard to offer cli tools in standalone binaries.
Details
Implementation is using vercel/pkg to produce the binaries.
While there are a few options for modern node binary distribution (deno, bun, node-22),
pkg
allows for easy export of cross-platform node16 binaries without fundamentally altering the runtime.NOTICE:
pkg
is deprecated as of early 2024 as the maintainer couldnt keep up with the ecosystem. Case in point,pkg
offers no support for es6 modules.Luckily, there is a workaround.
The workaround involves using rollup to bundle the output into a single
.cjs
file.Rollup doesn't seem to support top-level await so I made IIFEs out of of the two top-level awaits in the in the package.
TODO