`wasm-bindgen` 命令行接口

`wasm-bindgen` 命令行工具提供了许多选项来调整生成的 JavaScript。最新的标志集始终可以通过 `wasm-bindgen --help` 列出。

安装

cargo install -f wasm-bindgen-cli

用法

wasm-bindgen [options] ./target/wasm32-unknown-unknown/release/crate.wasm

选项

--out-dir DIR

用于输出 JavaScript 绑定、TypeScript 定义、处理后的 `.wasm` 二进制文件等的目录。

--target

此标志指示 `wasm-bindgen` 应该生成什么类型的输出。例如,它可以生成要在像 Webpack 这样的打包器中加载的代码、原生网页或 Node.js。有关传递此标志的完整选项列表,请参阅有关部署的部分

--no-modules-global VAR

当使用 `--target no-modules` 时,此标志可以指示分配生成绑定的全局变量的名称。

有关此的更多信息,请参阅有关部署的部分

--typescript

为生成的 JavaScript 绑定输出 TypeScript 声明文件。默认情况下启用此选项。

--no-typescript

默认情况下,为生成的 JavaScript 绑定生成 `*.d.ts` TypeScript 声明文件,但此标志将禁用它。

--omit-imports

当 `module` 属性与 `wasm-bindgen` 宏一起使用时,代码生成器将在生成的 javascript 的标头部分发出相应的 `import` 或 `require` 语句。此标志会导致省略这些导入语句。这对于某些用例是必要的,例如生成用于 Electron 的 javascript(禁用 node 集成),其中导入是通过单独的预加载脚本处理的。

--debug

在“调试模式”下生成更多 JS 和 Wasm,以帮助捕获程序员错误,但此输出不打算发布到生产环境。

--no-demangle

在后处理 `.wasm` 二进制文件时,不要对“names”自定义部分中的 Rust 符号进行去混淆。

--keep-lld-exports

在后处理 `.wasm` 二进制文件时,不要删除 Rust 的链接器 LLD 合成的导出。

--keep-debug

在后处理 `.wasm` 二进制文件时,不要删除 DWARF 调试信息自定义部分。

--browser

当生成与打包器兼容的代码时(请参阅有关部署的部分),这表示捆绑的代码始终旨在进入浏览器,因此可以省略对 Node.js 的一些检查。

--omit-default-module-path

不要在生成的 JavaScript 中添加 WebAssembly 回退导入。

--split-linked-modules

控制 wasm-bindgen 是否将链接的模块拆分到它们自己的文件中。建议启用此选项,因为它允许延迟加载链接的模块并设置更严格的内容安全策略。

wasm-bindgen 使用 `new URL('…', import.meta.url)` 语法来解析指向此类拆分文件的链接。这与大多数打包器不兼容,因为打包器不知道将链接的模块包含在其输出中。这就是为什么默认情况下禁用此选项的原因。Webpack 5 是一个例外,它对此语法进行了特殊处理。

对于其他打包器,您需要采取额外的步骤才能使其工作,可能需要使用插件。或者,您可以按原样保留语法,而是手动配置打包器以将 `snippets/` 中的所有文件复制到输出目录,保留它们相对于最终包含 JS shim 的捆绑文件的路径。

在 no-modules 目标上,如果在文档外部(例如,在工作器内部)使用,`link_to!` 将无法工作。这是因为如果没有像 `import.meta.url` 这样的参考点,就不可能弄清楚链接模块的 URL 是什么。