📦✨ wasm-pack

Your favorite rust -> wasm workflow tool!

Build Status Build status

This tool seeks to be a one-stop shop for building and working with rust- generated WebAssembly that you would like to interop with JavaScript, in the browser or with Node.js. wasm-pack helps you build and publish rust-generated WebAssembly to the npm registry to be used alongside any other javascript package in workflows that you already use, such as [webpack] or [greenkeeper].

This project is a part of the [rust-wasm] group. You can find more info by visiting that repo!

demo

🔮 Prerequisities

This project requires Rust 1.30.0 or later.

🎙️ Commands

📝 Logging

We generate a wasm-pack.log file if wasm-pack errors on you, and you can customize the log verbosity using the verbosity flag.

| Verbosity | Result | | ------------- |-----------------------------------------------------| | -v | All Info, Warn, and Errors are logged | | -vv | All Debug, Info, Warn, and Errors are logged | | -vvv | All Trace, Debug, Info, Warn, and Errors are logged |

👯 Contributing

Read our [guide] on getting up and running for developing wasm-pack, and check out our [contribution policy].

⚡ Quickstart Guide

  1. Write a crate in Rust.
  2. Add wasm-bindgen to your Cargo.toml:

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

    [dependencies] wasm-bindgen = "0.2" ```

  3. Add this to the top of your src/lib.rs:

    ```rust extern crate wasm_bindgen;

    use wasm_bindgen::prelude::*; ```

  4. Annotate your public functions with #[wasm_bindgen], for example:

    ```rust

    [wasm_bindgen]

    extern { pub fn alert(s: &str); }

    [wasm_bindgen]

    pub fn greet(name: &str) { alert(&format!("Hello, {}!", name)); } ```

  5. Install this tool: cargo install wasm-pack

  6. Run wasm-pack build, optionally, pass a path to a dir or a scope (see above for details)
  7. This tool generates files in a pkg dir
  8. To publish to npm, run wasm-pack publish. You may need to login to the registry you want to publish to. You can login using wasm-pack login.