{"id":15481737,"url":"https://github.com/crabnebula-dev/cargo-packager","last_synced_at":"2025-05-15T01:09:32.872Z","repository":{"id":198279683,"uuid":"687753660","full_name":"crabnebula-dev/cargo-packager","owner":"crabnebula-dev","description":"Rust executable packager, bundler and updater.","archived":false,"fork":false,"pushed_at":"2025-05-14T17:29:10.000Z","size":4412,"stargazers_count":326,"open_issues_count":25,"forks_count":28,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-14T17:42:40.681Z","etag":null,"topics":["appbundle","appimage","bundle","bundler","deb","debian","dmg","executable","installer","msi","nsis","packager","rust","wix"],"latest_commit_sha":null,"homepage":"https://docs.crabnebula.dev/packager/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crabnebula-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.spdx","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-09-06T00:03:42.000Z","updated_at":"2025-05-14T17:27:42.000Z","dependencies_parsed_at":"2023-10-16T22:43:48.601Z","dependency_job_id":"66232c9a-1bdf-45c5-b00f-978543824a3b","html_url":"https://github.com/crabnebula-dev/cargo-packager","commit_stats":{"total_commits":313,"total_committers":17,"mean_commits":18.41176470588235,"dds":0.5271565495207668,"last_synced_commit":"6e638b52bf4db4cb3426e7866ba49a141217b9ad"},"previous_names":["crabnebula-dev/cargo-packager"],"tags_count":97,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crabnebula-dev%2Fcargo-packager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crabnebula-dev%2Fcargo-packager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crabnebula-dev%2Fcargo-packager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crabnebula-dev%2Fcargo-packager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crabnebula-dev","download_url":"https://codeload.github.com/crabnebula-dev/cargo-packager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198390,"owners_count":22030957,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appbundle","appimage","bundle","bundler","deb","debian","dmg","executable","installer","msi","nsis","packager","rust","wix"],"created_at":"2024-10-02T05:05:52.799Z","updated_at":"2025-05-15T01:09:27.861Z","avatar_url":"https://github.com/crabnebula-dev.png","language":"Rust","readme":"# cargo-packager\n\n\u003cimg src=\"https://raw.githubusercontent.com/crabnebula-dev/cargo-packager/main/.github/splash.png\" alt=\"cargo-packager splash\" /\u003e\n\nExecutable packager, bundler and updater. A cli tool and library to generate installers or app bundles for your executables.\nIt also has a compatible updater through [cargo-packager-updater](./crates/updater/).\n\n#### Supported packages:\n\n- macOS\n  - DMG (.dmg)\n  - Bundle (.app)\n- Linux\n  - Debian package (.deb)\n  - AppImage (.AppImage)\n  - Pacman (.tar.gz and PKGBUILD)\n- Windows\n  - NSIS (.exe)\n  - MSI using WiX Toolset (.msi)\n\n## Rust\n\n### CLI\n\nThe packager is distributed on crates.io as a cargo subcommand, you can install it using cargo:\n\n```sh\ncargo install cargo-packager --locked\n```\n\nYou 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:\n\n```toml\n[package.metadata.packager]\nbefore-packaging-command = \"cargo build --release\"\n```\n\nOnce, you are done configuring your app, run:\n\n```sh\ncargo packager --release\n```\n\n### Configuration\n\nBy default, the packager reads its configuration from `Packager.toml` or `packager.json` if it exists, and from `package.metadata.packager` table in `Cargo.toml`.\nYou can also specify a custom configuration using the `-c/--config` cli argument.\n\nFor a full list of configuration options, see https://docs.rs/cargo-packager/latest/cargo_packager/config/struct.Config.html.\n\nYou could also use the [schema](./crates/packager/schema.json) file from GitHub to validate your configuration or have auto completions in your IDE.\n\n### Building your application before packaging\n\nBy 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`.\n\n### Cargo profiles\n\nBy 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\nrun 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`.\n\n### Library\n\nThis 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.\n\n```sh\ncargo add cargo-packager --no-default-features\n```\n\n#### Feature flags\n\n- **`cli`**: Enables the cli specifc features and dependencies. Enabled by default.\n- **`tracing`**: Enables `tracing` crate integration.\n\n## NPM (Node.js)\n\nCheckout the packager NPM cli [README](./bindings/packager/nodejs/README.md)\n\n## Examples\n\nThe [`examples`](./examples/) directory contains a number of varying examples, if you want to build them all run `cargo r -p cargo-packager -- --release` in the root of this repository. Just make sure to have the tooling for each example installed on your system. You can find what tooling they require by checking the README in each example. The README also contains a command to build this example alone if you wish.\n\nExamples list (non-exhaustive):\n\n- [`tauri`](./examples/tauri/)\n- [`wry`](./examples/wry/)\n- [`dioxus`](./examples/dioxus/)\n- [`egui`](./examples/egui/)\n- [`deno`](./examples/deno/)\n- [`slint`](./examples/slint/)\n- [`wails`](./examples/wails)\n\n## Licenses\n\nMIT or MIT/Apache 2.0 where applicable.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrabnebula-dev%2Fcargo-packager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrabnebula-dev%2Fcargo-packager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrabnebula-dev%2Fcargo-packager/lists"}