#publish #cargo-subcommand #wasm #wapm #package-manager

bin+lib cargo-wapm

将 Rust 包发布到 WebAssembly 包管理器

15 个版本

0.3.6 2023年2月16日
0.3.5 2023年2月16日
0.2.2 2022年11月21日
0.1.6 2022年10月24日
0.1.2 2022年6月28日

#169Cargo 插件


wasmer-pack-testing 使用

Apache-2.0 协议

26KB
479

Cargo WAPM

Continuous integration

(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-APACHEhttps://apache.ac.cn/licenses/LICENSE-2.0)。

建议始终使用 cargo-crev 来验证每个依赖项的可靠性,包括这个依赖项。

贡献

除非您明确声明,否则您提交给工作以供包含在内的任何贡献,根据 Apache-2.0 许可证定义,将作为上述双重许可,不附加任何额外的条款或条件。

本包的目的是避免任何安全性错误。开发人员将尽力避免这些问题,并欢迎帮助分析和修复这些问题。

依赖项

~12MB
~202K SLoC