`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,这是必需的,其中导入通过单独的预加载脚本处理。

--debug

以“调试模式”生成更多 JS 和 wasm,以帮助捕获程序员错误,但此输出不打算用于生产环境。

--no-demangle

在后处理 `.wasm` 二进制文件时,不要在“名称”自定义部分中反解 Rust 符号。

--keep-lld-exports

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

--keep-debug

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

--browser

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

--reference-types

启用 WebAssembly 引用类型提案 提案的使用,这意味着 WebAssembly 二进制文件将在导入和导出使用 `JsValue` 的函数时使用 `externref`。有关更多信息,请参阅 有关引用类型的文档

--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! 在文档之外使用,例如在 worker 中,它将无法工作。这是因为在没有像 import.meta.url 这样的参考点的情况下,无法确定链接模块的 URL。