changepacks 📦
A unified version management and changelog tool for multi-language projects.
Overview
changepacks is a CLI tool that helps you efficiently manage versioning and changelogs across different programming languages and package managers. It provides a unified interface for managing versions in Node.js, Python, Rust, and Dart projects.
Features
- 🚀 Multi-language Support: Native support for Node.js, Python, Rust, and Dart
- 📝 Unified Version Management: Consistent versioning across different package managers
- 🔄 Automated Updates: Smart version bumping based on project changes
- ⚡ CLI Interface: Simple and intuitive command-line interface
- 🎯 Project Detection: Automatic detection of projects in your workspace
- 📊 Status Tracking: Track which projects need version updates
Supported Languages & Package Managers
| Language | Package Manager | File | Status |
|---|---|---|---|
| Node.js | npm, pnpm, yarn | package.json |
✅ Supported |
| Python | pip, uv | pyproject.toml |
✅ Supported |
| Rust | Cargo | Cargo.toml |
✅ Supported |
| Dart | pub | pubspec.yaml |
✅ Supported |
Installation
Requirements
- Rust 1.91+ (for development)
- Cargo
- Git repository (for project detection)
Build from Source
The binary will be available at target/release/changepacks (or target/release/changepacks.exe on Windows).
Usage
Initialize Project
Initialize changepacks in your repository:
This creates a .changepacks/ directory with configuration files.
Check Project Status
Discover and display all projects in your workspace:
Filter by project type:
Update Versions
Update project versions based on changes:
Options:
Check Config
View the loaded changepacks config (from .changepacks/config.json):
This prints the merged and defaulted configuration, for example:
You can edit .changepacks/config.json to customize:
- Files/projects to ignore (
ignore) using glob patterns (default: empty). - The base branch to compare against for changes (
baseBranch, default:"main"). - The default main package for versioning (
latestPackage, optional).
If the config file is missing or empty, sensible defaults are used.
Default Command
Running changepacks without arguments starts an interactive session to select projects and create a changepack log.
Project Structure
changepacks/
├── crates/
│ ├── cli/ # CLI interface and commands
│ ├── core/ # Core types and traits
│ ├── node/ # Node.js project support
│ ├── python/ # Python project support
│ ├── rust/ # Rust project support
│ ├── dart/ # Dart project support
│ └── utils/ # Utility functions
├── examples/ # Example projects for testing
├── Cargo.toml # Workspace configuration
└── README.md
How It Works
- Project Detection: Scans your repository for supported project files
- Change Tracking: Monitors file changes to determine which projects need updates
- Version Management: Provides unified version bumping across different package managers
- Update Coordination: Ensures consistent versioning across related projects
Development
Build Workspace
Run Tests
Lint Check
Run Examples
Test with example projects:
Architecture
The project is built with a modular architecture:
- Core: Defines common traits and types for workspaces and packages
- Language Crates: Implement language-specific project detection and management
- CLI: Provides the user interface and command orchestration
- Utils: Shared utilities for path handling, version calculation, and more
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Sponsors
We're grateful to our sponsors for supporting changepacks development! If you're interested in sponsoring this project, please get in touch.
Used By
The following open-source projects and companies are using changepacks:
If you're using changepacks in your project, we'd love to feature you here! Please open a Pull Request to add your project or company.
License
This project is distributed under the MIT License. See the LICENSE file for more details.
Roadmap
- Node.js package management support
- Python package management support
- Rust package management support
- Dart package management support
- CI/CD integration support
- Plugin system for additional languages
Support
If you encounter any issues or have feature requests, please let us know on the Issues page.
Inspirations
- changesets - Version management for JavaScript projects