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