No project description provided
Project description
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
winget install Changepacks.Changepacks
cargo install changepacks
pip install changepacks
uv add changepacks
# run
uvx changepacks
npm install @changepacks/cli
bun install @changepacks/cli
pnpm install @changepacks/cli
yarn install @changepacks/cli
# run
npx @changepacks/cli
bunx @changepacks/cli
pnpm dlx @changepacks/cli
Requirements
- Rust 1.91+ (for development)
- Cargo
- Git repository (for project detection)
Build from Source
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
Initialize Project
Initialize changepacks in your repository:
changepacks init
This creates a .changepacks/ directory with configuration files.
Check Project Status
Discover and display all projects in your workspace:
changepacks check
Filter by project type:
changepacks check --filter workspace # Show only workspaces
changepacks check --filter package # Show only packages
Update Versions
Update project versions based on changes:
changepacks update
Options:
changepacks update --dry-run # Preview changes without applying
changepacks update --yes # Skip confirmation prompts
Publish Packages
Publish packages to their respective registries:
changepacks publish
Options:
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:
{
"ignore": [
"**/*",
"!crates/changepacks/Cargo.toml",
"!bridge/node/package.json",
"!bridge/python/pyproject.toml"
],
"baseBranch": "main",
"latestPackage": "crates/changepacks/Cargo.toml",
"publish": {
"node": "npm publish",
"python": "uv publish",
"rust": "cargo publish",
"dart": "dart pub publish",
"bridge/node/package.json": "npm publish --access public"
}
}
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). - Custom publish commands (
publish):- Set language-specific commands using language keys:
"node","python","rust","dart". - Set project-specific commands using relative paths (e.g.,
"bridge/node/package.json"). - If not specified, default commands are used (see Publish Packages section).
- Set language-specific commands using language keys:
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
cargo build
Run Tests
cargo test
Lint Check
cargo clippy
Run Examples
Test with example projects:
cd examples/node/common
changepacks check
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file changepacks-0.2.9-py3-none-win_amd64.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-win_amd64.whl
- Upload date:
- Size: 4.2 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cc2e014db2c7b246b9904403fc87c572e343a553fb3fe964288ece3aa50522b
|
|
| MD5 |
1e44ca9161c696875fb6370d5956e358
|
|
| BLAKE2b-256 |
859b258d58b797358ab107d87da9d1887941aa0b088ccfaa5445e38cbc9989be
|
File details
Details for the file changepacks-0.2.9-py3-none-win32.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-win32.whl
- Upload date:
- Size: 3.9 MB
- Tags: Python 3, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25a10dd026d0c5fe846440c55ccab454a795a5097e492638fa8e719dd6fb5f96
|
|
| MD5 |
c8cdac24c2bdf27abb9f62af26f22eed
|
|
| BLAKE2b-256 |
3e64938e18af2ef48a1697f0cd4e55173e4ca915f8251e2e0de6948708bdfe7d
|
File details
Details for the file changepacks-0.2.9-py3-none-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 4.5 MB
- Tags: Python 3, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed178c2033eca67fa6a54023740350852ec8f93ff825b2bc2271f2331bbd4134
|
|
| MD5 |
af5ed1e5ce657e97e4abd3d0259b5815
|
|
| BLAKE2b-256 |
09dd286eb62c6a69ff8456db1b6710654afa51b86e03959985d8a147fb091704
|
File details
Details for the file changepacks-0.2.9-py3-none-musllinux_1_2_i686.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-musllinux_1_2_i686.whl
- Upload date:
- Size: 4.5 MB
- Tags: Python 3, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b14de72bc048b72101829b39d21dcb02365780f54ddb895523493b54bf1b57c
|
|
| MD5 |
691ff7a241a96dc1ba8ec50abcc2b89c
|
|
| BLAKE2b-256 |
ef38caf3eac458a76530185f2d87dcf71c372c23013e6c0b73491405e0d80336
|
File details
Details for the file changepacks-0.2.9-py3-none-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-musllinux_1_2_armv7l.whl
- Upload date:
- Size: 4.0 MB
- Tags: Python 3, musllinux: musl 1.2+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
271d4a23aa89b05308e3c5a93d20bb4d21e21a15c9deb78f27455034ac511f97
|
|
| MD5 |
d015471e2755913b921afd260905735e
|
|
| BLAKE2b-256 |
1a59829c156ef2df6bb44f9ec5363b8a919156978563d828f2aebdf39c648379
|
File details
Details for the file changepacks-0.2.9-py3-none-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 4.2 MB
- Tags: Python 3, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e905756a84eec1d319b87159e6a81496932392cc54c87ff7ee4015f2f2bb446
|
|
| MD5 |
97ced5ae6081cbe6314f39a5c92a2ea5
|
|
| BLAKE2b-256 |
3f5897477f458ce4c68003019896bc1a0785d83adb6a53101d9fdbe98be3ad89
|
File details
Details for the file changepacks-0.2.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 4.5 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3deb265ab6510c6380d4cf5783f390e68832f4d4774bd6f693198d879f33db37
|
|
| MD5 |
b879f5fdf13e7d8f052759ed40645658
|
|
| BLAKE2b-256 |
44f2aa6c741f9169049626f646a14d2c0a0b677834db4b570d14d94cb731827e
|
File details
Details for the file changepacks-0.2.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 5.3 MB
- Tags: Python 3, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7289d650cef5de99bb2893ed4d753dbde6e7be5ff928662a0a8a6e1c602a59c6
|
|
| MD5 |
85d06e4b694bd29b3856ad8c03509b62
|
|
| BLAKE2b-256 |
1744d3f90ae230d36ddf5813cd01c30c9f8c71db9cdb1dda5d31ce8e5838343c
|
File details
Details for the file changepacks-0.2.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 4.8 MB
- Tags: Python 3, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af3099c520416d5b1d057939fca6005946856c6ed8f0c06c5b6d2d6416110645
|
|
| MD5 |
a84942b3f23d496a353dee610d84f9e4
|
|
| BLAKE2b-256 |
45a54d858bde8cededbdcdb0d885a0324909b91a8103b15f07512cea56656721
|
File details
Details for the file changepacks-0.2.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 4.0 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4e963e1b02348348659239063e69240ba7968b596209eb1f53dcfd1d32ac725
|
|
| MD5 |
601c9886228458f4c2ead1ab744babcb
|
|
| BLAKE2b-256 |
38c39395a960d83568d325fcf491a6a90de97a237eded78013d51e4874f6e141
|
File details
Details for the file changepacks-0.2.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 4.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca06aebc2fa14912740e14844f974e50c8cd8a34275aa098dfaaa12e14a14a6c
|
|
| MD5 |
b734e430dc342cfac3309e5ff567d41e
|
|
| BLAKE2b-256 |
712bf7ceec6e5ba19430a4a866cb92229799b1fbc5769bab51fa4a6a2056243c
|
File details
Details for the file changepacks-0.2.9-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.1 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a0de71745f1deb8d7939e7ca95df6c686f96b3d24ecb51ecfad035f79098adc
|
|
| MD5 |
3def85112875887c06b8f2d64c9afd11
|
|
| BLAKE2b-256 |
1b7dfa7a9a8d16a3c4c712d15b9b5db337dd9de04571cc8439b4a68b7bef4557
|
File details
Details for the file changepacks-0.2.9-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: changepacks-0.2.9-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 4.3 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72e7e68f2270ac8eea8b96d855fd2891caf14f9492a258af0251d257d5a17d79
|
|
| MD5 |
924ff9a87daf023a41636b1553c0b9b5
|
|
| BLAKE2b-256 |
f639e66d359636f34ba2b9c90b6244a4297804de80559248bae71d8a9bc0dfba
|