2 个不稳定版本
0.4.0 | 2023 年 10 月 26 日 |
---|---|
0.3.6 | 2023 年 10 月 26 日 |
#276 在 Cargo 插件
28KB
487 行
Cargo Wasmer
(API 文档)
A cargo
子命令,用于将 Rust 包发布到 Wasmer 包注册表。
如果您想深入了解 cargo wasmer
的工作原理,请查看 宣布 Cargo WAPM。
注意: 这个命令过去被称为
cargo wapm
,当时wapm
是一个独立的命令。现在大多数与 Wasmer 注册表的交互都已合并到wasmer
CLI 中,因此该命令已被重命名为cargo wasmer
。
入门指南
您可以从 crates.io 安装 cargo wasmer
命令。
$ cargo install cargo-wasmer --locked
您还需要安装 wasmer
CLI 并 认证 注册表。
$ curl https://get.wasmer.io -sSfL | sh
$ wasmer login
Username: my-user
Password: ****
一旦完成这些,打开您的包的 Cargo.toml
文件,并添加一个元数据部分来告诉 cargo wasmer
如何打包您的包。
# Cargo.toml
[package.metadata.wasmer]
namespace = "Michael-F-Bryan"
abi = "none"
abi
参数告诉 cargo wasmer
在编译到 WebAssembly 时使用哪个目标。
ABI | 目标三元组 |
---|---|
无 |
wasm32-unknown-unknown |
wasi |
wasm32-wasi |
emscripten |
wasm32-emscripten |
还需要将 cdylib
添加到 crate-type
列表中。如果其他crate依赖此crate(集成测试、文档测试、示例等),还应添加 rlib
crate类型。
# Cargo.toml
[lib]
crate-type = ["cdylib", "rlib"]
现在 Cargo.toml
已经是最新的,我们可以进行一次dry run来确保一切正确。
$ cd examples/hello-world/
$ cargo wasmer --dry-run
2022-05-03T17:33:31.929353Z INFO publish: cargo_wasmer: 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_wasmer: Published! pkg="hello-world"
我们可以看到一些文件已经写入到 target/wasmer/
文件夹。
$ tree ../../target/wasmer
../../target/wasmer
└── hello-world
├── hello_world.wasm
├── LICENSE_MIT.md
├── README.md
└── wasmer.toml
1 directory, 4 files
$ cat ../../target/wasmer/hello-world/wasmer.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
命令以实际发布crate。
命令 cargo wasmer
不处理任何版本升级,所以发布的 version
直接从 Cargo.toml
中读取。如果你需要管理日常发布任务,如升级版本、标记提交或更新更改日志,请查看 这个 cargo release
工具。
工作区
通常,cargo wasmer
命令只会发布当前目录中的crate。
但是,通过使用 --workspace
标志,你可以在当前工作区中发布每个crate,只要它们在 Cargo.toml
中有 [package.metadata.wasmer]
部分。使用 --exclude
参数可以在发布时跳过一个特定的crate。
发布
此存储库使用 Release Please来自动化创建发布的大部分工作。
每当遵循 Conventional Commit Style 的提交合并到 main
时,release-please.yml
工作流程将运行并更新“发布PR”以反映新更改。
对于仅修复bug的提交(即消息以 "fix: "
开头),相关的crate将收到更改日志条目和补丁版本升级。同样,添加新功能(即 "feat:"
)将进行小版本升级,添加破坏性更改(即 "fix!:"
或 "feat!:"
)将导致主版本升级。
当发布PR合并时,更新的更改日志和升级的版本号将合并到 main
分支,release-please.yml
工作流程将自动生成GitHub Releases,如果需要,CI将发布crate。
TL;DR
- 每次进行有意义的更改时,请使用 Conventional Commit Messages
- 准备好发布时,合并发布PR
- 让自动化处理其他所有事情
许可证
本项目采用Apache许可证,版本2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)。
建议始终使用 cargo-crev 来验证每个依赖项的可信度,包括此依赖项。
贡献
除非你明确表示否则,根据Apache-2.0许可证定义,你提交的任何有意包含在本作品中的贡献,都将按照上述方式双许可,无需任何额外条款或条件。
此crate的目的是不包含任何安全性错误。开发者将尽最大努力避免它们,并欢迎帮助分析和修复它们。
依赖项
约11MB
约201K SLoC