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
二進制檔案時,不要在「names」自訂區段中解碼 Rust 符號。
--keep-lld-exports
當後處理 .wasm
二進制檔案時,不要移除由 Rust 的連結器 LLD 合成的導出。
--keep-debug
當後處理 .wasm
二進制檔案時,不要移除 DWARF 偵錯資訊自訂區段。
--browser
當產生與打包器相容的程式碼時(請參閱部署章節),這表示打包的程式碼始終打算進入瀏覽器,因此可以省略對 Node.js 的一些檢查。
--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!
,則它將不起作用,例如在 worker 內部。這是因為如果沒有像 import.meta.url
這樣的參考點,就不可能找出連結的模組的 URL。