[翻譯]Hello, wasm-pack - cargo.toml

Cargo.toml

cargo.toml是Rust 包管理器 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,一個使代碼量更小而優化的分配器。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章