/rust-loader

Primary LanguageJavaScriptMIT LicenseMIT

@wasm-tool/rust-loader

Webpack plugin for Rust

Installation

yarn add --dev @wasm-tool/rust-loader

Usage

It is highly recommended to use the Rust Webpack Template to create a new Rust project.


But if you instead want to manually create the project yourself, follow these steps:

Create a Cargo.toml file which has the cdylib crate type:

[package]
name = "foo"
version = "0.1.0"
edition = "2018"

[lib]
crate-type = ["cdylib"]

[dependencies]
wasm-bindgen = "0.2.48"

[dependencies.web-sys]
version = "0.3.25"
features = ["console"]

And create a src/lib.rs file:

use wasm_bindgen::prelude::*;
use web_sys::console;

#[wasm_bindgen(start)]
pub fn main_js() {
    console::log_1(&JsValue::from("Hello world!"));
}

Now add the loader to your webpack.config.js and import the Cargo.toml file:

module.exports = {
  entry: {
    index: "./Cargo.toml"
  },
  module: {
    rules: [{ test: /Cargo\.toml$/, use: "@wasm-tool/rust-loader" }]
  }
};

Then just run webpack as usual.

It also fully supports webpack-dev-server (including live reloading):

module.exports = {
  entry: {
    index: "./Cargo.toml"
  },
  devServer: {
    liveReload: true,
    open: true,
    noInfo: true,
    overlay: true
  },
  module: {
    rules: [{ test: /Cargo\.toml$/, use: "@wasm-tool/rust-loader" }]
  }
};