Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration Reference

Complete reference for releasaurus.toml, environment variables, and supported languages. For guidance and examples, see Configuration.

Global Settings

Top-level keys, all optional:

KeyTypeDefaultDescription
base_branchstringrepo defaultBranch targeted for PRs, tagging, and releases. Override: --base-branch.
first_release_search_depthinteger400Commits to analyze for the first release (when no matching tag exists).
tag_search_depthinteger100Max tags fetched when searching for a previous release. 0 = all tags.
separate_pull_requestsboolfalseOne PR per package (true) vs. a single combined PR (false).
auto_start_nextboolfalseBump patch versions automatically after a release (see start-next).
breaking_always_increment_majorbooltrueBreaking changes (feat!:, BREAKING CHANGE:) bump major.
features_always_increment_minorbooltruefeat: commits bump minor.
custom_major_increment_regexstringnoneAdditional regex that triggers a major bump.
custom_minor_increment_regexstringnoneAdditional regex that triggers a minor bump.

Custom increment regexes

custom_major_increment_regex and custom_minor_increment_regex are additive — breaking changes always bump major and feat: always bumps minor regardless. The pattern is matched against the full commit message. In TOML double-quoted strings, escape backslashes (\\):

custom_major_increment_regex = "\\[MAJOR\\]"   # matches "[MAJOR]"
custom_minor_increment_regex = "FEATURE"        # no escaping needed

[prerelease]

Global prerelease config; can be overridden per package via a package prerelease table. See Prereleases.

KeyTypeDefaultDescription
suffixstringnone (stable)Identifier such as alpha, beta, rc, SNAPSHOT. Override: --prerelease-suffix.
strategystringversionedversioned (adds .1, .2, …) or static (suffix as-is). Override: --prerelease-strategy.
[prerelease]
suffix = "beta"
strategy = "versioned"

[changelog]

Controls changelog generation. See Changelog Customization for the template and variables.

KeyTypeDefaultDescription
skip_ciboolfalseExclude ci: commits.
skip_choreboolfalseExclude chore: commits.
skip_docboolfalseExclude docs: commits.
skip_testboolfalseExclude test: commits.
skip_styleboolfalseExclude style: commits.
skip_refactorboolfalseExclude refactor: commits.
skip_perfboolfalseExclude perf: commits.
skip_revertboolfalseExclude revert: commits.
skip_miscellaneousboolfalseExclude non-conventional commits.
skip_merge_commitsbooltrueExclude merge commits.
include_authorboolfalseInclude commit author names.
aggregate_prereleasesboolfalseOn graduation, fold prior prerelease notes into the stable release.
skip_shasstring[]noneSkip commits by SHA prefix (7+ chars). CLI: --skip-sha.
rewordobject[]noneRewrite commit messages (affects changelog and version bump). CLI: --reword.
bodystringstandard templateTera template for the changelog body.
[changelog]
skip_ci = true
skip_chore = true

[[changelog.reword]]
sha = "abc123d"
message = "fix: corrected description"

[[package]]

One entry per package; repeatable.

KeyTypeDefaultDescription
pathstring.Package directory, relative to workspace_root.
workspace_rootstring.Workspace root, relative to repo root.
namestringderived from pathExplicit package name; must be unique.
release_typestringnoneLanguage for version updates (see Supported Languages). Omit for changelog/tagging only.
tag_prefixstringv (root) / <name>-v (nested)Git tag prefix. Override: --tag-prefix or --set-package <name>.tag_prefix=.
prereleasetableinherits globalPer-package prerelease override. Override: --set-package <name>.prerelease.suffix=.
sub_packagesobject[]noneGroup packages under one shared tag/changelog (see Grouped Releases).
additional_pathsstring[]noneExtra directories whose changes trigger a release for this package.
additional_manifest_filesstring[] / object[]noneExtra files to version-bump (see below).
auto_start_nextboolinherits globalPer-package auto_start_next override.
breaking_always_increment_majorboolinherits globalPer-package override.
features_always_increment_minorboolinherits globalPer-package override.
custom_major_increment_regexstringinherits globalPer-package override.
custom_minor_increment_regexstringinherits globalPer-package override.

sub_packages entries take name, path, and release_type.

additional_manifest_files

Extra files whose version strings should be kept in sync — custom VERSION files, docs, config, etc. Accepts plain string paths (using a default regex) or objects with a custom version_regex. All paths are relative to the package path.

[[package]]
path = "."
release_type = "rust"
additional_manifest_files = [
    "VERSION",                    # default regex
    "README.md",                  # default regex
    { path = "helm/Chart.yaml", version_regex = "appVersion:\\s*\"?(?<version>\\d+\\.\\d+\\.\\d+)\"?" },
]

The default regex matches common forms like version = "1.0.0", version: "1.0.0", VERSION='1.0.0', and "version": "1.0.0". A custom version_regex must include a named capture group (?<version>...); only that group is replaced. Files without a match are skipped; an invalid regex errors during config resolution.

Complete Example

# Global settings
base_branch = "main"
first_release_search_depth = 400
separate_pull_requests = false
auto_start_next = false
breaking_always_increment_major = true
features_always_increment_minor = true

[prerelease]
suffix = "beta"
strategy = "versioned"

[changelog]
skip_ci = true
skip_chore = true
include_author = false

[[package]]
name = "frontend"
path = "./apps/web"
release_type = "node"
tag_prefix = "web-v"

[[package]]
name = "backend"
path = "./services/api"
release_type = "rust"
tag_prefix = "api-v"
prerelease = { suffix = "alpha", strategy = "versioned" }

Environment Variables

Releasaurus selects the auth token automatically from the --forge type; --token overrides it. The RELEASAURUS_* variables are fallbacks for their matching CLI flags, and flags always win.

VariablePurpose
GITHUB_TOKENGitHub auth token
GITLAB_TOKENGitLab auth token
GITEA_TOKENGitea auth token
FORGEJO_TOKENForgejo auth token
AZURE_DEVOPS_TOKENAzure DevOps PAT (experimental)
RELEASAURUS_FORGEDefault --forge
RELEASAURUS_REPODefault --repo
RELEASAURUS_LOCAL_PATHDefault --local-path (hybrid mode)
RELEASAURUS_DEBUGEnable debug logging when set to any non-empty value
RELEASAURUS_DRY_RUNEnable dry-run (auto-enables debug) when set to any non-empty value

Required token scopes

ForgeScopes / permissions
GitHub (classic)repo
GitHub (fine-grained)Contents, Issues, Pull requests — all read & write. Add Actions/Workflows read & write only if using the Action to trigger/modify workflows.
GitLabapi, write_repository
GiteaRepository read/write, issue/PR management
ForgejoRepository read/write, issue/PR management
Azure DevOpsCode: Read & Write, Pull Request Threads: Read & Write

RELEASAURUS_DEBUG and RELEASAURUS_DRY_RUN are enabled by any non-empty value (including false or 0); unset or empty to disable. The --debug / --dry-run flags always enable regardless of the variable.

Supported Languages

Set release_type on a package and Releasaurus updates the matching manifest and lock files. Lock files are updated when present, and all languages support workspace/monorepo layouts.

release_typeFiles updated
genericCustom files via additional_manifest_files
goversion.go, version/version.go, internal/version.go, internal/version/version.go
javapom.xml, build.gradle, build.gradle.kts, gradle.properties, gradle/libs.versions.toml
nodepackage.json, package-lock.json, yarn.lock
phpcomposer.json, composer.lock
pythonpyproject.toml, setup.py, setup.cfg
ruby*.gemspec, Gemfile, Gemfile.lock
rustCargo.toml, Cargo.lock