CLI tool to automatically generate changesets from dependency changes in Git commits.
- 🔍 Package detection - Detects all packages with dependency changes
- 📝 Changeset generation - Parses package.json diffs to create meaningful changeset summaries
- 📦 Monorepo support - Works with npm/yarn/pnpm workspaces using
@manypkg/get-packages
npm install -g @izumisy/deps2changesetsOr use with npx:
npx @izumisy/deps2changesetsNote: The short alias
deps2csis only available when globally installed. When using npx, use the full package name@izumisy/deps2changesets.
Generate changesets for dependency changes between commits:
# Compare main to HEAD (default, ideal for dependabot branches)
npx @izumisy/deps2changesets
# Compare specific commits using Git range syntax
npx @izumisy/deps2changesets --range abc123..def456
# Compare branches
npx @izumisy/deps2changesets --range main..feature-branch
# Compare from a specific ref to HEAD
npx @izumisy/deps2changesets --range main..| Option | Short | Description | Default |
|---|---|---|---|
--range |
-r |
Git commit range (e.g., main..HEAD, a1b2c3..d4e5f6) |
main..HEAD |
--release-type |
-t |
Release type for changesets (patch, minor, major) |
patch |
--cwd |
-c |
Working directory | Current directory |
--dry-run |
-d |
Preview changes without creating changesets | false |
--include-deps |
-i |
Additional dependency types to include (comma-separated: prod, dev, peer, optional) |
prod |
Note: By default, only production
dependenciesare included in changesets. Use--include-depsto include changes fromdevDependencies,peerDependencies, oroptionalDependencies.
# Generate patch changesets for changes from main (default)
npx @izumisy/deps2changesets
# Generate changesets for a specific range
npx @izumisy/deps2changesets --range HEAD~3..HEAD
# Generate minor changesets
npx @izumisy/deps2changesets --range main..HEAD --release-type minor
# Run in a specific directory
npx @izumisy/deps2changesets --cwd /path/to/repo
# Preview changes without creating changesets
npx @izumisy/deps2changesets --dry-run
# Include devDependencies changes
npx @izumisy/deps2changesets --include-deps=dev
# Include both devDependencies and peerDependencies changes
npx @izumisy/deps2changesets --include-deps=dev,peer- Detects changed files - Uses Git to get changed files between commits
- Filters package.json files - Identifies which packages have dependency changes
- Parses diffs - Extracts dependency changes (added/updated/removed) from package.json files
- Maps to workspace packages - Uses
@manypkg/get-packagesto match files to workspace packages - Generates changesets - Creates changesets with human-readable summaries
Generated changeset:
---
"my-package": patch
---
Dependencies updated
- Updated [lodash](https://www.npmjs.com/package/lodash) (^4.17.19 -> ^4.17.21)
- Added [axios](https://www.npmjs.com/package/axios) (^1.4.0)You can automate changeset generation for Dependabot PRs using the provided GitHub Action.
# .github/workflows/dependabot-changeset.yml
name: Dependabot Changeset
on:
pull_request:
types: [opened, synchronize]
permissions:
contents: write
pull-requests: write
jobs:
generate-changeset:
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Generate and commit changeset
uses: izumisy/deps2changesets@v1Remember to set versioning-strategy: increase to reflect version updates on package.json file.
| Input | Description | Default |
|---|---|---|
release-type |
Release type for changesets (patch, minor, major) |
patch |
include-deps |
Dependency types to include (comma-separated: prod, dev, peer, optional) |
prod |
commit-message |
Commit message for the changeset | chore: add changeset for dependency update |
- name: Generate and commit changeset
uses: izumisy/deps2changesets@v1
with:
release-type: minor
include-deps: prod,dev
commit-message: 'chore: add changeset for deps update'See LICENSE file for details.