A release management tool inspired by Changesets and Release Please, designed for monorepos with project-centric versioning.
Release management should be simple. auto-release lets you focus on building features while it handles versioning, changelogs, and releases.
Language agnostic: Works with any project type. Built-in components for Node, Bun, Expo, and PHP projects, but you can add custom components for anything.
Built for monorepos: Each project can have its own versioning strategy (semver, calver, marketing) and release independently.
Developer-friendly: Record changes with markdown files as you work. No complex conventions or strict commit messages required.
CI-native: Release branches let you test before production. Tags trigger deployments automatically.
npx @afoures/auto-release@latest init
# or
pnpm dlx @afoures/auto-release@latest init
# or
yarn dlx @afoures/auto-release@latest init
# or
bunx @afoures/auto-release@latest initThis creates auto-release.config.ts and sets up the .changes directory.
npm install @afoures/auto-release
# or
pnpm add @afoures/auto-release
# or
yarn add @afoures/auto-release
# or
bunx add @afoures/auto-releaseCreate auto-release.config.ts:
import { define_config } from 'auto-release'
import { semver } from 'auto-release/versioning'
import { github } from 'auto-release/providers'
import { node } from 'auto-release/components'
export default define_config({
projects: {
'my-app': {
components: [node('packages/my-app')],
versioning: semver(),
changelog: 'CHANGELOG.md',
},
},
git: {
platform: github({
token: process.env.GITHUB_TOKEN!,
owner: 'your-org',
repo: 'your-repo',
}),
target_branch: 'main',
},
})Inspired by Changesets and Release Please, designed for project-centric monorepos where:
- Multiple projects release independently with different versioning strategies
- Change files are organized by project for clarity
- Release branches allow testing before production
- Deployment is integrated with the release process
MIT
See LICENSE