BlogEx
BACK TO FEED
2020.08.19 ● PUBLIC

Adding WASM lib to NX monorepo

rustreactwasmnx

Based on my old notes from 2020-08-19 — might be outdated.

WHY?

I wanted to run the Rust wasm game-of-life example as a lib in nx monorepo. Here's a hacky way to do it.

Full rust+wasm game of life example with GitHub actions / GitHub pages integrations can be found in my nx-rs repository. I've used this method also in my Advent of Code solutions.

INSTALL DEPENDENCIES

Install all required dependencies:

  • wasm-pack - cargo install wasm-pack
  • npm install --save-dev @nx/rust

Initialize new rust library in nx monorepo:

nx g @nx/rust:lib my-wasm-lib

CONFIGURE WASM TARGET

Add wasm target to your project's project.json, inside the targets array for the rust library:

{
"root": "libs/my-wasm-lib",
"sourceRoot": "libs/my-wasm-lib/src",
"projectType": "library",
"targets": {
"wasm": {
"executor": "@nx/rust:wasm-pack",
"options": {
"name": "my-wasm-lib",
"target": "web"
}
}
}
}

USE THE LIB IN YOUR APP

Now you can use the lib in your React app:

import init, { greet } from 'my-wasm-lib';
async function main() {
await init();
greet('World');
}
main();