Skip to content

Commit

Permalink
migrate wasm example to trunk (#844)
Browse files Browse the repository at this point in the history
## Description

This PR migrates the wasm example from an npm/webpack based approach to [trunk](https://trunkrs.dev/). Fixes #834.

Of note:
the `console_error_panic_hook` dependency was gated in `Cargo.toml` via `[target."cfg(debug_assertions)".dependencies]`. This is documented as nonfunctional and will throw a warning on build:
```
warning: Found `debug_assertions` in `target.'cfg(...)'.dependencies`. 
This value is not supported for selecting dependencies and will not work as expected. 
To learn more visit https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#platform-specific-dependencies
```

Since the actual usage of `console_error_panic_hook` is *also* gated in `lib.rs` behind `#[cfg(debug_assertions)]` it didn't make sense to have the cargo gate in place, hence I have removed it.

## Next steps

If this PR is merged, the [wiki page](https://github.com/RustAudio/cpal/wiki/Setting-up-a-new-CPAL-WASM-project) linked in the root README should be updated as well.
  • Loading branch information
spookyvision committed Feb 25, 2024
1 parent bdbbf75 commit db04f57
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 6,994 deletions.
3 changes: 0 additions & 3 deletions examples/wasm-beep/.gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
Cargo.lock
node_modules
/dist
/target
/pkg
/wasm-pack.log
15 changes: 7 additions & 8 deletions examples/wasm-beep/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ lto = true

[dependencies]
cpal = { path = "../..", features = ["wasm-bindgen"] }
# `gloo` is a utility crate which improves ergonomics over direct `web-sys` usage.
gloo = "0.11.0"
# The `wasm-bindgen` crate provides the bare minimum functionality needed
# to interact with JavaScript.
wasm-bindgen = "0.2.45"
Expand All @@ -27,15 +29,12 @@ wasm-bindgen = "0.2.45"
# allocator, so it's not enabled by default.
wee_alloc = { version = "0.4.2", optional = true }

# The `console_error_panic_hook` crate provides better debugging of panics by
# logging them with `console.error`.
console_error_panic_hook = "0.1.5"

# The `web-sys` crate allows you to interact with the various browser APIs,
# like the DOM.
[dependencies.web-sys]
version = "0.3.22"
features = ["console"]

# The `console_error_panic_hook` crate provides better debugging of panics by
# logging them with `console.error`. This is great for development, but requires
# all the `std::fmt` and `std::panicking` infrastructure, so it's only enabled
# in debug mode.
[target."cfg(debug_assertions)".dependencies]
console_error_panic_hook = "0.1.5"
features = ["console", "MouseEvent"]
15 changes: 7 additions & 8 deletions examples/wasm-beep/README.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,28 @@
## How to install

[trunk](https://trunkrs.dev/) is used to build and serve the example.
```sh
npm install
cargo install --locked trunk
# -- or --
cargo binstall trunk
```

## How to run in debug mode

```sh
# Builds the project and opens it in a new browser tab. Auto-reloads when the project changes.
npm start
trunk serve --open
```

## How to build in release mode

```sh
# Builds the project and places it into the `dist` folder.
npm run build
# Builds the project in release mode and places it into the `dist` folder.
trunk build --release
```

## What does each file do?

* `Cargo.toml` contains the standard Rust metadata. You put your Rust dependencies in here. You must change this file with your details (name, description, version, authors, categories)

* `package.json` contains the standard npm metadata. You put your JavaScript dependencies in here. You must change this file with your details (author, name, version)

* `webpack.config.js` contains the Webpack configuration. You shouldn't need to change this, unless you have very special needs.

* The `src` folder contains your Rust code.
14 changes: 0 additions & 14 deletions examples/wasm-beep/index.js

This file was deleted.

Loading

0 comments on commit db04f57

Please sign in to comment.