wasm-pack build

wasm-pack build 命令创建了用于 JavaScript 交互操作和将包发布到 npm 所需的文件。这包括将您的代码编译为 wasm 并生成一个 pkg 文件夹。此 pkg 文件夹将包含 wasm 二进制文件、JS 包装器文件、您的 README 和一个 package.json 文件。

默认情况下,pkg 目录会自动被 .gitignore,因为它包含不打算签入版本控制的构建工件。0

路径

wasm-pack build 命令可以接受一个可选的路径参数,例如:

wasm-pack build examples/js-hello-world

此路径应指向包含 Cargo.toml 文件的目录。如果没有给出路径,则 build 命令将在当前目录中运行。

输出目录

默认情况下,wasm-pack 将为其构建输出生成一个名为 pkg 的目录。如果您想自定义它,可以使用 --out-dir 标志。

wasm-pack build --out-dir out

上面的命令将把您的构建工件放在名为 out 的目录中,而不是默认的 pkg

生成的文件名

标志 --out-name 设置输出文件名的前缀。如果未提供,则使用包名称。

使用示例,假设我们的板条箱名为 dom

wasm-pack build
# will produce files
# dom.d.ts  dom.js  dom_bg.d.ts  dom_bg.wasm  package.json  README.md

wasm-pack build --out-name index
# will produce files
# index.d.ts  index.js  index_bg.d.ts  index_bg.wasm  package.json  README.md

配置文件

build 命令接受一个可选的配置文件参数:--dev--profiling--release 之一。如果没有提供,则使用 --release

这控制是否启用调试断言、是否生成调试信息以及启用哪些(如果有)优化。

配置文件调试断言调试信息优化笔记
--dev 适用于开发和调试。
--profiling 在分析和调查性能问题时很有用。
--release 适用于发布到生产环境。

--dev 配置文件将使用 cargo 的 默认非发布配置文件 构建输出包。这种构建方式更快,但对输出应用的优化很少,并且启用调试断言和其他运行时正确性检查。--profiling--release 配置文件使用 cargo 的发布配置文件,但前者也启用调试信息,这在使用分析器调查性能问题时很有帮助。

配置文件标志的确切含义可能会随着平台的成熟而发展。

目标

build 命令接受一个 --target 参数。这将自定义发出的 JS 以及 WebAssembly 文件的实例化和加载方式。有关此处各种策略的更多文档,请参阅 有关使用编译输出的文档

wasm-pack build --target nodejs
选项用法描述
未指定bundler 捆绑器 输出适合与 Webpack 等捆绑器交互的 JS。您将 import JS,并且 module 键在 package.json 中指定。默认情况下,sideEffects: false
nodejs Node.js 输出使用 CommonJS 模块的 JS,用于与 require 语句一起使用。package.json 中的 main 键。
web 浏览器中的原生 输出可以在浏览器中作为 ES 模块原生导入的 JS,但 WebAssembly 必须手动实例化和加载。
no-modules 浏览器中的原生 web 相同,除了 JS 包含在页面上并修改全局状态,并且不支持 wasm-bindgen 的许多功能,如 web
deno Deno 输出可以在 deno 中作为 ES 模块原生导入的 JS。

范围

build 命令还接受一个可选的 --scope 参数。这将限定您的包名称,如果您包名称可能与公共注册表中的内容冲突,这很有用。例如

wasm-pack build examples/js-hello-world --scope test

此命令将为名为 @test/js-hello-world 的包创建一个 package.json 文件。有关范围的更多信息,您可以参考 npm 文档 此处

模式

build 命令接受一个可选的 --mode 参数。

wasm-pack build examples/js-hello-world --mode no-install
选项描述
no-install wasm-pack build 隐式创建 wasm 绑定,而无需安装 wasm-bindgen
normal 执行 no-install 的所有操作,并安装 wasm-bindgen

额外选项

build 命令可以将额外选项直接传递给 cargo build,即使它们在 wasm-pack 中不受支持。要使用它们,只需在命令的末尾添加额外的参数,就像您对 cargo build 一样。例如,要使用 cargo 的离线功能构建前面的示例

wasm-pack build examples/js-hello-world --mode no-install -- --offline

0 如果您需要在 pkg 目录和 NPM 包中包含其他资产,我们打算很快为您用例提供解决方案。