fork of https://github.com/rustwasm/wasm-pack for the needs of NextGraph.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

86 lines
2.3 KiB

# Manual Setup
This is not the recommended way to start a `wasm-pack` project! If you ended up
here by mistake, go check out our [recommended project start][template].
[template]: ../getting-started.html
### Step 1: Create a New Rust Library Project
You can create a new Rust project named `my-lib` using this command.
```
cargo new --lib my-lib
```
The `--lib` flag specifies that the project is a library, which is important
because we will be calling this code from JavaScript.
### Step 2: Edit your `Cargo.toml` File
#### Add the `wasm-bindgen` dependency
You will need to add `wasm-bindgen` to your `Cargo.toml` in the dependencies
section. `wasm-bindgen` is a tool that facilitates interoperability between
wasm modules and JavaScript.
If you are coming from JavaScript, you might note that when we add the dependency
there is no `^` or `~` symbol- it looks like we're locking to the `0.2` version.
However, that's not the case! In Rust, the `^` is implied.
#### Add `crate-type`
Next, add a `[lib]` section, with a new field named `crate-type` set to
`"cdylib"`. This specifies that the library is a C compatible dynamic library,
which helps `cargo` pass the correct flags to the Rust compiler when targeting
`wasm32`.
After making these changes, your `Cargo.toml` file should look something like
this:
```toml
[package]
name = "hello-wasm"
version = "0.1.0"
authors = ["Ashley Williams <ashley666ashley@gmail.com>"]
description = "babby's first wasm package"
license = "MIT/Apache-2.0"
repository = "https://github.com/ashleygwilliams/hello-wasm"
[lib]
crate-type = ["cdylib"]
[dependencies]
wasm-bindgen="0.2"
```
### Step 3: Write some Rust!
Now that your crate is correctly configured in your `Cargo.toml` file, the only step
left to setup your project is to have some Rust code in your `src/lib.rs` file.
#### Browser Example
The template we have gives you a quick "Hello, World" project to use for compiling into
a WebAssembly library that you can use in the browser:
```rust
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern {
fn alert(s: &str);
}
#[wasm_bindgen]
pub fn greet() {
alert("Hello, World!");
}
```
And that's it! We'll talk about what this code does in the [template deep dive], which you are all
setup for now. Happy `wasm-pack`ing!
[template deep dive]: ../template-deep-dive/index.html