#pack #npm #publish

bin+lib wasm-pack

📦✨ your favorite rust -> wasm workflow tool!

10 releases (5 breaking)

new 0.6.0 Jan 16, 2019
0.5.1 Oct 9, 2018
0.5.0 Sep 25, 2018
0.4.2 Jul 25, 2018
0.1.0 Mar 16, 2018

#23 in WebAssembly

Download history 174/week @ 2018-10-26 165/week @ 2018-11-02 195/week @ 2018-11-09 154/week @ 2018-11-16 145/week @ 2018-11-23 167/week @ 2018-11-30 153/week @ 2018-12-07 183/week @ 2018-12-14 245/week @ 2018-12-21 273/week @ 2018-12-28 166/week @ 2019-01-04 183/week @ 2019-01-11 216/week @ 2019-01-18

806 downloads per month


2.5K SLoC

📦✨ 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!


🔮 Prerequisities

This project requires Rust 1.30.0 or later.

🎙️ Commands

  • init (⚠️ DEPRECATED): This command has been deprecated since release 0.5.0, in favor of build. 0.4.2 and previous use this command.
  • build: Generate an npm wasm pkg from a rustwasm crate
  • pack and publish: Create a tarball of your rustwasm pkg and/or publish to a registry

📝 Logging

wasm-pack uses env_logger to produces logs when wasm-pack runs.

To configure your log level, use the RUST_LOG environment variable. For example:

RUST_LOG=info wasm-pack build

👯 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:
crate-type = ["cdylib"]

wasm-bindgen = "0.2"
  1. Add this to the top of your src/lib.rs:
extern crate wasm_bindgen;

use wasm_bindgen::prelude::*;
  1. Annotate your public functions with #[wasm_bindgen], for example:
extern {
    pub fn alert(s: &str);

pub fn greet(name: &str) {
    alert(&format!("Hello, {}!", name));
  1. Install this tool: cargo install wasm-pack
  2. Run wasm-pack build, optionally, pass a path to a dir or a scope (see above for details)
  3. This tool generates files in a pkg dir
  4. 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.


~362K SLoC