15 个版本
0.3.6 | 2023年2月16日 |
---|---|
0.3.5 |
|
0.2.2 | 2022年11月21日 |
0.1.6 | 2022年10月24日 |
0.1.2 | 2022年6月28日 |
#169 在 Cargo 插件 中
被 wasmer-pack-testing 使用
26KB
479 行
Cargo WAPM
(API 文档)
一个用于将 Rust 包发布到 WebAssembly 包管理器的 cargo
子命令。
如果您想深入了解 cargo wapm
的工作原理,请参阅 宣布 Cargo WAPM。
入门
您可以从 crates.io 安装 cargo wapm
命令。
$ cargo install cargo-wapm
您还需要 安装 wapm CLI 并 [认证][auth] WAPM。
$ curl https://get.wasmer.io -sSfL | sh
$ wapm login
Username: my-user
Password: ****
完成这些后,打开您的包的 Cargo.toml
文件,并添加一个元数据部分,以告知 cargo wapm
如何打包您的包。
# Cargo.toml
[package.metadata.wapm]
namespace = "Michael-F-Bryan"
abi = "none"
abi
参数告诉 cargo wapm
使用哪个目标在编译为 WebAssembly 时编译。
ABI | 目标三元组 |
---|---|
无 |
wasm32-unknown-unknown |
wasi |
wasm32-wasi |
emscripten |
wasm32-emscripten |
您还需要将 cdylib
添加到 crate-type
列表。如果其他包依赖于此包(集成测试、文档测试、示例等),则还应添加 rlib
包类型。
# Cargo.toml
[lib]
crate-type = ["cdylib", "rlib"]
现在 Cargo.toml
已更新,我们可以进行测试运行,以确保一切正常。
$ cd examples/hello-world/
$ cargo wapm --dry-run
2022-05-03T17:33:31.929353Z INFO publish: cargo_wapm: Publishing dry_run=true pkg="hello-world"
Successfully published package `Michael-F-Bryan/[email protected]`
[INFO] Publish succeeded, but package was not published because it was run in dry-run mode
2022-05-03T17:33:32.366576Z INFO publish: cargo_wapm: Published! pkg="hello-world"
我们可以看到一些文件已写入 target/wapm/
文件夹。
$ tree ../../target/wapm
../../target/wapm
└── hello-world
├── hello_world.wasm
├── LICENSE_MIT.md
├── README.md
└── wapm.toml
1 directory, 4 files
$ cat ../../target/wapm/hello-world/wapm.toml
[package]
name = "Michael-F-Bryan/hello-world"
version = "0.1.0"
description = "A dummy package."
license-file = "LICENSE_MIT.md"
readme = "README.md"
[[module]]
name = "hello-world"
source = "hello_world.wasm"
abi = "none"
如果您对生成的文件满意,请移除 --dry-run
命令以实际发布包。
命令 cargo wapm
不处理任何版本升级,因此发布的 version
将直接从 Cargo.toml
读取。如果您需要一些可以管理常规发布任务(如升级版本、标记提交或更新更改日志)的工具,请查看 这个 cargo release
工具。
工作空间
通常,cargo wapm
命令只会发布当前目录下的包。
但是,通过使用 --workspace
标志,您可以在当前工作空间中发布每个包,前提是它们的 Cargo.toml
中有 [package.metadata.wapm]
部分。使用 --exclude
参数可以在发布时跳过一个特定的包。
许可证
本项目采用 Apache License, Version 2.0 许可 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)。
建议始终使用 cargo-crev 来验证每个依赖项的可靠性,包括这个依赖项。
贡献
除非您明确声明,否则您提交给工作以供包含在内的任何贡献,根据 Apache-2.0 许可证定义,将作为上述双重许可,不附加任何额外的条款或条件。
本包的目的是避免任何安全性错误。开发人员将尽力避免这些问题,并欢迎帮助分析和修复这些问题。
依赖项
~12MB
~202K SLoC