`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` 二进制文件时,不要在“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。