#publish #cargo-command #cargo #cargo-subcommand #monorepo #crates #cargo-registry

bin+lib cargo-publish-workspace-v2

Cargo 命令用于发布工作区单一代码库

3 个不稳定版本

0.2.1 2023年4月5日
0.2.0 2023年4月5日
0.1.0 2023年4月5日

#437Cargo 插件

每月48次下载

Apache-2.0 OR MIT

19KB
406

cargo publish-workspace

该工具扩展了 Cargo,允许您发布工作区,一个 rust 单一代码库。

安装

请确保您已安装了较新的 rust/cargo 版本。在 Ubuntu 上,您还需要安装 libssl-devpkg-config 软件包。

$ cargo install cargo-publish-workspace-v2

用法

$ cargo publish-workspace --help
Usage: cargo publish-workspace [OPTIONS] --crate-prefix <CRATE_PREFIX> [-- <cargo-publish-args>...]

Arguments:
  [cargo-publish-args]...  Additional arguments to pass to 'cargo publish'

Options:
  -p, --crate-prefix <CRATE_PREFIX>                    The prefix of the crates to publish, e.g. 'my-repo-crate-'
      --dry-run                                        Run without publishing, same as --show-order
      --show-order                                     Only display the order of crates to be published
      --target-version <TARGET_VERSION>                Specify the version to use instead of CI_TAG environment variable
      --aligned-versions-only                          Verify that every Cargo.toml version are aligned with the version to publish
      --token <TOKEN>                                  Specify the token to use instead of CARGO_REGISTRY_TOKEN environment variable
      --exclude <EXCLUDE>                              Crates to exclude and not modify (arg can be supplied multiple times)
      --verify-upload-retries <VERIFY_UPLOAD_RETRIES>  The number of retries to attempt when verifying the upload of a crate [default: 30]
  -h, --help                                           Print help
  -V, --version                                        Print version

示例

发布

$ cd my-mono-repo
$ cargo publish-workspace --target-version 1.0.0 --token CARGO_REGISTRY_TOKEN --crate-prefix PREFIX

干运行并显示要发布的 crate 顺序

$ cd my-mono-repo
$ cargo publish-workspace --crate-prefix mat-clockwork --show-order
    Finished show dependencies order
0. mat-clockwork-utils
1. mat-clockwork-cron
2. mat-clockwork-thread-program-v1
3. mat-clockwork-network-program

排除一个 crate 进行发布

cargo publish-workspace --target-version 1.0.0 --token CARGO_REGISTRY_TOKEN --crate-prefix PREFIX --exclude crate-1 --exclude crate-2

您还可以在 crate 的 Cargo.toml 中设置 publish = false

从 GitHub Action 中发布

此工具已设计为与 CI 工具(如 GitHub Action)一起使用。请确保设置 GitHub secrets 变量 CARGO_REGISTRY_TOKEN 并使用适当的值。

  • 版本将从 $CI_TAG 环境变量中推断
  • 令牌将从 $CARGO_REGISTRY_TOKEN 环境变量中推断
cargo publish-workspace --crate-prefix PREFIX

许可

Apache-2.0/MIT

依赖关系

~4–14MB
~177K SLoC