#worker #wasi #install #cli

bin+lib wasi-worker-cli

创建和部署基于 WASM WASI 的浏览器服务工作者的工具

15 个不稳定版本 (5 个破坏性更新)

0.6.0 2020 年 8 月 30 日
0.5.0 2020 年 2 月 7 日
0.4.5 2019 年 11 月 19 日
0.3.3 2019 年 11 月 7 日
0.1.2 2019 年 10 月 30 日

#788WebAssembly

每月 30 次下载

MIT/Apache

485KB
1K SLoC

JavaScript 567 SLoC // 0.0% comments TypeScript 351 SLoC // 0.0% comments Rust 221 SLoC // 0.1% comments

创建和打包基于 WASM WASI 的浏览器服务工作者的工具

此工具为使用 wasi-worker 库构建的浏览器服务工作者提供 JavaScript 代码。

安装

注意:wasi-worker-cli 0.5+ 需要 rustc 1.41+,因为它现在基于 wasi-snapshot-preview1

cargo install wasi-worker-cli

使用

% wasiworker help       
wasi-worker-cli 0.2.0
Install JavaScript glue code and WASI toolset for WASI worker to function.

USAGE:
    wasiworker <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    deploy     Executes `cargo build --bin worker` and deploys with glue code under ./dist
    help       Prints this message or the help of the given subcommand(s)
    install    Install static files and worker.rs template in current crate
  1. 在当前目录是工具包根目录的情况下安装 wasiworker 模板
wasiworker install

它将创建 bin/worker.rs 并将相关目标和依赖项放入当前的 Cargo.toml。如果未找到 Cargo.toml,则将引发恐慌。

  1. 在 ./dist 下构建和部署 worker 以及所有依赖项
wasiworker deploy

它将运行 cargo build --release --target wasm32-wasi --bin worker,将生成的 worker.wasm 复制到 ./dist 并将 JavaScript 代码复制到 ./dist/worker.js。它还将添加 wasm_transformer 以能够在浏览器中运行。

注意:目前它使用 wasm-gc 工具显著减小生成的 wasm 文件大小。

  • 考虑将 cargo wasi 子命令转换为

构建/修改

代码结构

  • src/main.rs - 是 CLI,编译时将 dist 代码嵌入到生成的二进制文件中
  • js/* 是 JavaScript 包的源代码,它使用 rollup 和 typescript 构建分发文件
  • js/dist/* 是使用生产设置构建的最新粘合代码分发文件

手动从工具包中安装 CLI 包

cargo install --path . --force

它还将嵌入放置在 ./dist 子目录下的任何版本的 JS 粘合代码。

为开发构建 JS 粘合代码

cd js
npm install
npm run build:dev

为分发构建 JS 粘合代码

cd js
npm install
npm run build

致谢

JavaScript粘合代码基于以下优秀的包构建。感谢https://wasmer.io/为让WASI易于使用做出的出色工作。

待办事项

  • 命令行界面
  • JavaScript粘合包
  • 将JavaScript dist嵌入到包中
  • 文档
  • Cargo构建脚本,用于打包和安装发布或调试版本,包括构建js依赖项
  • 添加wasm-gc以优化生成的wasm大小
  • 命令行安装
  • 命令行安装允许自定义工作器名称
  • 命令行部署仅发布
  • 命令行部署可以编译为调试版本

依赖项

~6MB
~107K SLoC