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 包中包含其他资产,我们打算很快为您用例提供解决方案。 ↩