Add experimental @tailwindcss/oxide-wasm32-wasi #17558
Merged
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.
Closes #13133
This PR adds an a new Oxide target for
wasm32-wasip1-threads:@tailwindcss/oxide-wasm32-wasi. The goal of this is to enable more environments to run Oxide, including (but not limited to) StackBlitz.We're making use of
napi-rs's upcoming v3 features to simplify the setup here, meaningnapi-rswill configure the WASM target and create an npm package that works across Node and browser environments.MacOS AArch64 issues
While setting up an integration test for the new WASM target, I ran into an issue where FS reads where not terminating on macOS. After some research I found this to be a limitation of the Node.js container interface right now, see: nodejs/node#47193
Windows issues
We also found that the Node.js wasi container does not properly support Windows: nodejs/uvwasi#11
For now we, it's probably best for MacOS AArch64 users and Windows users to use the native modules instead.
Test plan
The
@tailwindcss/oxide-wasm32-wasinpm package can be built locally viapnpm buildand then run with the Oxide API. A usage example can be taken from the newly added integration test.Furthermore this was tested to work as a polyfill on StackBlitz: https://stackblitz.com/edit/vitejs-vite-uks3gt5p
[ci-all]