7 个不稳定版本
0.4.0 | 2024 年 5 月 28 日 |
---|---|
0.3.2 | 2023 年 3 月 27 日 |
0.3.0 | 2022 年 12 月 20 日 |
0.2.0 | 2022 年 10 月 9 日 |
0.1.0 | 2022 年 1 月 5 日 |
#44 在 WebAssembly
9,730 每月下载量
25KB
371 行
cargo run-wasm
允许以最简单的方式运行 wasm 应用程序和示例
cargo run-wasm --example example_name
或
cargo run-wasm --package crate_name
或
cargo run-wasm --bin bin_name
在后台,它
- 将 Rust 项目编译为 wasm
- 运行 wasm-bindgen
- 生成运行 wasm 的 index.html
- 启动一个微型的 web 服务器以提供 index.html + 你的 wasm
设置
- 将你的 wasm 可运行项目设置为 cargo 工作空间中的一个 crate
- 在 workspace 中创建一个名为 run-wasm 的 crate,使用
Cargo.toml
:
[package]
name = "run-wasm"
version = "0.1.0"
edition = "2021"
[dependencies]
cargo-run-wasm = "0.3.0"
main.rs
:
fn main() {
cargo_run_wasm::run_wasm_cli_with_css("body { margin: 0px; }");
}
- 创建一个
.cargo/config
文件,包含
[alias]
run-wasm = "run --release --package run-wasm --"
- 就是这样,你现在可以运行前面描述的命令。您还可以运行
cargo run-wasm --help
以查看所有可能的标志。
注意:如果您想避免将项目重构为正确的工作空间,您可以通过将 workspace 和 crate 的 Cargo.toml
合并到单个文件中来实现,例如 winit 所做的那样。
相对于等效的 bash/powershell/bat 脚本的优点
- 跨平台
- 0 个外部依赖项
- 更好的 UX + 比用 bash/powershell/bat 拼接的任何东西都更稳健
- 由于在同一个工作空间中,因此 wasm-bindgen-cli 版本始终与 wasm-bindgen 版本同步,因为
cargo update
会同时更新它们
cargo 自定义命令
cargo-run-wasm 不是一个 cargo 自定义命令,因为这会导致
- 不同 wasm-bindgen 版本之间的不匹配问题
- 与 wasm 应用保持稳定接口的问题
- 给人一种命令与每个使用 wasm 的项目兼容的印象,但这并不是事实。
配置
如果您想设置自定义 css,请在 run_wasm_cli_with_css
的字符串参数中设置。
但是,从 cargo-run-wasm 中设置自定义 HTML 是不可能的,相反,您需要的任何 DOM 元素都应该在您的 crate 或示例中使用 web-sys 或另一个 crate 内部创建。原因在于,如果示例需要自定义 HTML,它可能
- 需要唯一的 HTML,而 cargo-run-wasm 只能进行全局设置
- 需要在运行时与 DOM 交互,因此需要 web-sys 或类似工具
MSRV
由于此工具的实现非常简单,MSRV 为 1.70,除非依赖项需要,否则不会增加。如果它被提高,它必须低于重要用户维护分支的 MSRV,例如 wgpu 和 winit。
MSRV 通过 rust-toolchain.toml
文件在 CI 和本地强制执行。
替代方案
- wasm-server-runner
- 优点
- 更好地与 cargo 集成
- 不需要任何设置即可在项目中使用
- 缺点
- 需要用户运行
cargo install wasm-server-runner
- wasm-bindgen 版本可能不同步,导致问题 如这个
- 需要用户运行
- 优点
许可协议
许可协议为以下之一
- Apache License 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖项
~9–18MB
~283K SLoC