Changepacks is a Command Line Interface (CLI) tool designed to streamline versioning and changelog management across multiple programming languages. It supports Node.js, Python, Rust, and Dart, providing developers with a unified approach to handle version updates efficiently.
Key Features:
Multi-Language Support: Changepacks natively manages projects in Node.js, Python, Rust, and Dart.
Unified Version Management: Ensures consistent versioning across different package managers.
Automated Updates: Smartly bumps versions based on detected project changes.
CLI Interface: Offers a straightforward command-line experience for ease of use.
Project Detection: Automatically identifies projects in your workspace.
Status Tracking: Helps track which projects require version updates.
Audience & Benefit:
Ideal for developers working on multi-language projects, Changepacks offers a consistent and efficient workflow. It simplifies changelog management and ensures that all project versions are aligned across different technologies.
Changepacks can be installed via winget, making it easy to integrate into your development environment.
This tool is perfect for developers seeking to maintain a cohesive versioning strategy across diverse projects, enhancing productivity and reducing the complexity of managing multiple languages.
README
changepacks ๐ฆ
A unified version management and changelog tool for multi-language monorepos.
Overview
changepacks is a Rust-powered CLI tool that brings consistent version management and changelog generation to polyglot projects. Inspired by , it extends beyond JavaScript to natively support Node.js, Python, Rust, and Dart ecosystems with a single, fast, and reliable tool.
git clone https://github.com/changepacks/changepacks.git
cd changepacks
cargo build --release
The binary will be available at target/release/changepacks (or target/release/changepacks.exe on Windows).
Usage
Quick Start
Initialize changepacks in your repository:
changepacks init
Create a changepack when you make changes:
changepacks
This opens an interactive session to select changed projects and write release notes.
Update versions from changepack logs:
changepacks update
Publish packages in dependency order:
changepacks publish
Typical Workflow
# 1. Check which projects have changed
changepacks check --tree
# 2. Create a changepack log for your changes
changepacks
# โ Select projects (Major/Minor/Patch)
# โ Write changelog notes
# 3. Preview version updates
changepacks update --dry-run
# 4. Apply version updates
changepacks update
# 5. Test publishing
changepacks publish --dry-run
# 6. Publish to registries
changepacks publish
Check Project Status
View all projects with change detection:
changepacks check # List all projects
changepacks check --tree # Show dependency tree
changepacks check --filter workspace # Only workspaces
changepacks check --filter package # Only packages
changepacks check --remote # Compare with remote branch
changepacks publish --dry-run # Preview what would be published without actually publishing
changepacks publish --yes # Skip confirmation prompts
changepacks publish --format json # Output results in JSON format
changepacks publish --remote # Use remote branch for change detection
The publish command will:
Discover all projects in your workspace
Show which projects will be published
Execute the publish command for each project (using language-specific defaults or custom commands from config)
Default publish commands by language:
Node.js: npm publish
Python: uv publish
Rust: cargo publish
Dart: dart pub publish
Check Config
View the loaded changepacks config (from .changepacks/config.json):
changepacks config
This prints the merged and defaulted configuration, for example: