[翻译]Hello, wasm-pack – cargo.toml

Cargo.toml

cargo.tomlRust 包管理器 cargo 的清单文件。这个文件包 nameversion 和包的依托,在 Rust 中,咱们一般称之为 crate

在示例中给出了一系列信息,但是咱们首要议论如下三点:

  • crate-type
  • wasm-bindgen 依托
  • [features]wee_allocconsole_error_panic_hook 依托

1.crate-type

[lib]
crate-type = ["cdylib", "rlib"]

Rust-wasm 包与一般的 crate 有一点不同,作为 WebAssembly 项目, 咱们该在 cargo.toml 中参加该阐明。

假定你了解其他的 Rust crate,那么你必定知道,大多的 crate 的类型是 rlib(默许), 或许是二进制办法bin(这种办法不需要 crate-type 注解), 而且 [lib] 注解在一般的 Cargo 项目中并不需要指定。

crate-type = ["cdylib"] 指示你的工程将会被编译为动态体系库 [dynamic system library], 但是关于 WebAssembly,他将会编译为一个没有建议函数的 .wasm 文件,在 Linux 途径上,他将会创立.so 文件,在macOS 上将会创立.dylib文件,在 windows 途径上将会创立 *.dylib 文件。

咱们一般指定 crate-type = ["rlib"] 来保证咱们的库能够用 wasm-pack 来做单元查验(稍后会看到)。假定没有这个装备,咱们将不能查验咱们的库,由于 cdylib 包类型和 wasm-pack 的单元查验类型相冲突。

你能够正常的运用此链接获取更多关于包类型的常识。

2. wasm-bindgen 依托

wasm-bindgen 在WebAssembly 中是一个重要的依托。 这个包容许咱们运用 [wasm-bindgen] 为在 JavaScript 和 Rust 生成的 wasm 之间的代码打标签。以使咱们运用它的特征能够导入 JS 而且导出 Rust。

wasm-bindgen = "0.2"

当咱们议论 lib.rs 生成什么内容的时分,将会看到更多关于怎样运用这个库。
假定你从 JavaScript 技能栈过来,你或许注意到了当咱们增加依托的时分并没有加 ^ 或许 ~ ,看起来像是咱们只需 0.2 这个版别。但是,实践并非如此!在 Rust 里, ^ 是默许的,你可运用这个 链接检查更多信息

3. [features] 和 wee_alloc, console_error_panic_hook dependencies

作为咱们规划模板的作业的一部分,该模板可帮助人们发现针对特定用例的有用包,该模板包含两个依托项,这关于开发Rust-wasm包的人们或许十分有用:console_error_panic_hook 和 wee_alloc。

由于这些依托联络首要在 Rust-wasm 包开发作业流程的特定部分中有用,所以咱们还设置了一些粘合代码,使咱们既能够将它们都包含为依托联络,又能够再一次做出合理的挑选将它们包含在内。

[features]
default = ["console_error_panic_hook"]
[dependencies]
wasm-bindgen = "0.2"
# The `console_error_panic_hook` crate provides better debugging of panics by
# logging them with `console.error`. This is great for development, but requires
# all the `std::fmt` and `std::panicking` infrastructure, so isn't great for
# code size when deploying.
console_error_panic_hook = { version = "0.1.1", optional = true }
# `wee_alloc` is a tiny allocator for wasm that is only ~1K in code size
# compared to the default allocator's ~10K. It is slower than the default
# allocator, however.
#
# Unfortunately, `wee_alloc` requires nightly Rust when targeting wasm for now.
wee_alloc = { version = "0.4.2", optional = true }

在咱们的代码中,只要在启用某些 [features] 的情况下,咱们才会将代码的某些部分标记为正在作业,特别是 console_error_panic_hook 和 wee_alloc。默许情况下,仅启用 console_error_panic_hook。要禁用或启用任一功用,默许情况下,咱们咱们咱们能够在 [features] 下批改 default 数组。

要了解有关这些功用的更多信息,咱们将在 src/lib.rs 和 src/utils.rs 部分中深化议论它们。
简要地,它们包含:

  • console_error_panic_hook ,用于将奔溃音讯记录到开发人员控制台的功用。
  • wee_alloc,一个使代码量更小而优化的分配器。