Use WasmPack instead
Webpack loader for Rust
#[no_mangle]pubfnadd(a:i32,b:i32) -> i32{
a + b
}[lib]
crate-type = ["cdylib"] # importantfnits_magic_number(x:i32) -> bool{
x == 42}#[no_mangle]pubfnplus_one(x:i32) -> i32{ifits_magic_number(x){420}else{ x + 1}}importaddfrom"./add.rs"importhugeCratefrom"./huge_crate/Cargo.toml"(async()=>{constadd=awaitadd.then(buf=>WebAssembly.instantiate(buf))consthugeCrate=awaithugeCrate.then(buf=>WebAssembly.instantiate(buf))console.log(add.instance.exports.add(1,2))// 3console.log(hugeCrate.instance.exports.plus_one(6))// 7console.log(hugeCrate.instance.exports.plus_one(42))// 420})()- Dont injects WASM to JS bundle, dynamic http fetching
.wasmfiles viafile-loader - Hot module replacement
- Prepare system
- Install nightly Rust:
rustup update nightly - Install rustc wasm target:
rustup target add wasm32-unknown-unknown --toolchain nightly - Install wasm-gc:
cargo install --git https://github.com/alexcrichton/wasm-gc --force
- Install nightly Rust:
- Configure Webpack
- Install
rust-loaderandfile-loader:yarn add rust-loader file-loader --dev - Use it in Webpack config:
rules: [{test: /(\.rs$|Cargo.toml)/,loader: "rust-loader"},{test: /\.wasm$/,loader: "file-loader",type: "javascript/auto"}]
- Install