Crates.io | cargo-packager |
lib.rs | cargo-packager |
version | 0.11.2 |
source | src |
created_at | 2023-09-04 15:02:40.19564 |
updated_at | 2024-10-10 20:08:29.843096 |
description | Executable packager and bundler distributed as a CLI and library. |
homepage | |
repository | https://github.com/crabnebula-dev/cargo-packager |
max_upload_size | |
id | 963259 |
size | 545,220 |
Executable packager, bundler and updater. A cli tool and library to generate installers or app bundles for your executables. It also comes with useful addons:
The packager is distributed on crates.io as a cargo subcommand, you can install it using cargo:
cargo install cargo-packager --locked
You then need to configure your app so the cli can recognize it. Configuration can be done in Packager.toml
or packager.json
in your project or modify Cargo.toml and include this snippet:
[package.metadata.packager]
before-packaging-command = "cargo build --release"
Once, you are done configuring your app, run:
cargo packager --release
By default, the packager reads its configuration from Packager.toml
or packager.json
if it exists, and from package.metadata.packager
table in Cargo.toml
.
You can also specify a custom configuration using the -c/--config
cli argument.
For a full list of configuration options, see https://docs.rs/cargo-packager/latest/cargo_packager/config/struct.Config.html.
You could also use the schema file from GitHub to validate your configuration or have auto completions in your IDE.
By default, the packager doesn't build your application, so if your app requires a compilation step, the packager has an option to specify a shell command to be executed before packaing your app, beforePackagingCommand
.
By default, the packager looks for binaries built using the debug
profile, if your beforePackagingCommand
builds your app using cargo build --release
, you will also need to
run the packager in release mode cargo packager --release
, otherwise, if you have a custom cargo profile, you will need to specify it using --profile
cli arg cargo packager --profile custom-release-profile
.
This crate is also published to crates.io as a library that you can integrate into your tooling, just make sure to disable the default-feature flags.
cargo add cargo-packager --no-default-features
cli
: Enables the cli specifc features and dependencies. Enabled by default.tracing
: Enables tracing
crate integration.MIT or MIT/Apache 2.0 where applicable.