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 of all configuration options for releasaurus.toml.

Global Settings

base_branch

Type: String (optional)

Default: Repository’s default branch

Base branch to target for release PRs, tagging, and releases.

base_branch = "main"

Override: --base-branch CLI flag

first_release_search_depth

Type: Integer (optional)

Default: 400

Number of commits to analyze for the first release (when no tags exist).

first_release_search_depth = 400

When to adjust:

  • Large repos: decrease to 100-200 for faster analysis
  • Need more history: increase to 1000+
  • CI/CD: use smaller values for speed

separate_pull_requests

Type: Boolean (optional)

Default: false

Create separate PRs for each package (true) or one combined PR (false).

separate_pull_requests = true

See Monorepo Configuration for details.

auto_start_next

Type: Boolean (optional)

Default: false

Automatically bump patch versions after publishing a release.

auto_start_next = true

Package-level settings override global. See start-next command.

breaking_always_increment_major

Type: Boolean (optional)

Default: true

Breaking changes (feat!: or BREAKING CHANGE:) increment major version.

breaking_always_increment_major = false

features_always_increment_minor

Type: Boolean (optional)

Default: true

Feature commits (feat:) increment minor version.

features_always_increment_minor = false

custom_major_increment_regex

Type: String (optional)

Default: None

Custom regex pattern matched against commit messages to trigger a major version bump. This is additive — breaking change commits (feat!:, fix!:, BREAKING CHANGE: footer, etc.) always trigger major bumps regardless of this setting. The custom regex adds an additional way to trigger the same bump.

The pattern is matched against the full commit message. In TOML double-quoted strings, backslashes must be escaped (write \\ to represent a single \ in the regex). For example, to match the literal text [MAJOR] in a commit message:

custom_major_increment_regex = "\\[MAJOR\\]"

A simpler pattern with no special characters needs no escaping:

custom_major_increment_regex = "MAJOR"

custom_minor_increment_regex

Type: String (optional)

Default: None

Custom regex pattern matched against commit messages to trigger a minor version bump. This is additivefeat: commits always trigger minor bumps regardless of this setting. The custom regex adds an additional way to trigger the same bump.

The pattern is matched against the full commit message. In TOML double-quoted strings, backslashes must be escaped (write \\ to represent a single \ in the regex). For example, to match the literal text [FEATURE] in a commit message:

custom_minor_increment_regex = "\\[FEATURE\\]"

A simpler pattern with no special characters needs no escaping:

custom_minor_increment_regex = "FEATURE"

Prerelease Section

[prerelease]

Global prerelease configuration for all packages.

suffix

Type: String (optional)

Default: None (stable releases)

Prerelease identifier (e.g., “alpha”, “beta”, “rc”, “SNAPSHOT”).

[prerelease]
suffix = "alpha"

Override: --prerelease-suffix CLI flag

strategy

Type: String (optional)

Default: “versioned”

Prerelease versioning strategy:

  • "versioned" - Adds incremental counter (.1, .2)
  • "static" - Uses suffix as-is
[prerelease]
suffix = "beta"
strategy = "versioned"

Override: --prerelease-strategy CLI flag

See Prerelease Configuration for complete details.

Changelog Section

[changelog]

Customize changelog generation and formatting.

skip_ci

Type: Boolean (optional)

Default: false

Exclude CI/CD commits from changelog.

[changelog]
skip_ci = true

skip_chore

Type: Boolean (optional)

Default: false

Exclude chore commits from changelog.

[changelog]
skip_chore = true

skip_miscellaneous

Type: Boolean (optional)

Default: false

Exclude non-conventional commits from changelog.

[changelog]
skip_miscellaneous = true

skip_merge_commits

Type: Boolean (optional)

Default: true

Exclude merge commits from changelog.

[changelog]
skip_merge_commits = false

skip_release_commits

Type: Boolean (optional)

Default: true

Exclude release commits created by Releasaurus.

[changelog]
skip_release_commits = false

include_author

Type: Boolean (optional)

Default: false

Include commit author names in changelog.

[changelog]
include_author = true

skip_shas

Type: Array of strings (optional)

Default: None

Skip specific commits by SHA prefix. Use 7+ character prefixes.

[changelog]
skip_shas = ["abc123d", "def456e"]

reword

Type: Array of objects (optional)

Default: None

Rewrite commit messages for specific commits. Affects both changelog and version calculation.

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

[[changelog.reword]]
sha = "def456e"
message = "feat: improved feature"

body

Type: String (optional)

Default: Standard template

Tera template for changelog body. See Changelog Configuration for template variables.

[changelog]
body = """## Release {{ version }}
..."""

Package Section

[[package]]

Define packages in your repository. Can have multiple.

path

Type: String (required)

Default: None

Directory path to the package, relative to workspace_root.

[[package]]
path = "."

workspace_root

Type: String (optional)

Default: “.”

Workspace root directory, relative to repository root.

[[package]]
workspace_root = "backend"
path = "services/api"

name

Type: String (optional)

Default: Derived from path

Explicit package name. If not set, derived from directory name.

[[package]]
name = "my-custom-name"
path = "packages/backend"

release_type

Type: String (required for version updates)

Default: None

Language/framework for version file updates:

  • "generic" - Changelog/tagging only
  • "go" - version.go
  • "java" - pom.xml, build.gradle, build.gradle.kts, gradle.properties, gradle/libs.versions.toml
  • "node" - package.json, lock files
  • "php" - composer.json, composer.lock
  • "python" - pyproject.toml, setup.py, setup.cfg
  • "ruby" - .gemspec, Gemfile
  • "rust" - Cargo.toml, Cargo.lock
[[package]]
path = "."
release_type = "node"

tag_prefix

Type: String (optional)

Default: Derived from package name

Git tag prefix. Defaults:

  • Root packages: "v"
  • Nested packages: "<name>-v"
[[package]]
path = "."
release_type = "rust"
tag_prefix = "v"

Override: --tag-prefix (global) or --set-package <name>.tag_prefix=<value> (per-package) CLI flags

sub_packages

Type: Array of objects (optional)

Default: None

Groups multiple packages under a single release that shares one changelog, tag, and release. Each sub-package gets independent manifest updates based on its release_type.

Use when: Multiple packages should always be released together with the same version and share the same changelog

[[package]]
name = "platform"
workspace_root = "."
path = "."
sub_packages = [
    { name = "web", path = "packages/web", release_type = "node" },
    { name = "cli", path = "packages/cli", release_type = "rust" }
]

See Grouped Releases for details.

auto_start_next

Type: Boolean (optional)

Default: Inherits global setting

Override global auto_start_next for this package.

[[package]]
path = "."
release_type = "node"
auto_start_next = false

prerelease

Type: Inline table (optional)

Default: Inherits global prerelease

Override global prerelease configuration.

[[package]]
path = "."
release_type = "rust"
prerelease = { suffix = "beta", strategy = "versioned" }

Override: --set-package <name>.prerelease.suffix=<value> CLI flag

additional_paths

Type: Array of strings (optional)

Default: None

Additional directories to monitor for changes.

[[package]]
path = "packages/api"
release_type = "node"
additional_paths = ["shared/utils", "shared/types"]

additional_manifest_files

Type: Array of strings or objects (optional)

Default: None

Specifies additional files that should have their version strings updated during a release. This is useful for:

  • Custom version files (e.g., VERSION, version.txt)
  • Documentation files with embedded version numbers
  • Configuration files that reference the package version
  • Any file with version strings that need to stay in sync

Accepts either simple string paths (recommended) or full configuration objects with custom regex patterns for advanced use cases.

Simple format (recommended for most cases):

[[package]]
path = "."
release_type = "rust"
additional_manifest_files = ["VERSION", "README.md", "docs/installation.md"]

All paths are relative to the package path. The default regex pattern automatically matches common version formats:

  • version = "1.0.0"
  • version: "1.0.0"
  • VERSION='1.0.0'
  • "version": "1.0.0"

Full format (for custom version patterns):

Use this when your files have non-standard version formats:

[[package]]
path = "."
release_type = "rust"
additional_manifest_files = [
    { path = "helm/Chart.yaml", version_regex = "appVersion:\\s*\"?(?<version>\\d+\\.\\d+\\.\\d+)\"?" },
    { path = "docker-compose.yml", version_regex = "image:.*:(?<version>\\d+\\.\\d+\\.\\d+)" }
]

Important: The regex must include a named capture group called version to identify which part of the match should be replaced (e.g., (?<version>\d+\.\d+\.\d+)). The surrounding text is automatically preserved.

Mixed format (combine simple and custom):

[[package]]
path = "."
release_type = "rust"
additional_manifest_files = [
    "VERSION",                    # Uses default regex
    "README.md",                  # Uses default regex
    { path = "config.yml", version_regex = "app_version:\\s*(?<version>\\d+\\.\\d+\\.\\d+)" }
]

Important notes:

  • Custom regex patterns must include a named capture group (?<version>...)
  • Files that don’t contain a version pattern are skipped automatically
  • Invalid regex patterns will cause an error during configuration resolution
  • Only the content within the version capture group is replaced
  • Paths must be relative to the package path, not the repository root

breaking_always_increment_major

Type: Boolean (optional)

Default: Inherits global setting

Override global breaking change behavior.

[[package]]
path = "."
release_type = "node"
breaking_always_increment_major = false

features_always_increment_minor

Type: Boolean (optional)

Default: Inherits global setting

Override global feature commit behavior.

[[package]]
path = "."
release_type = "rust"
features_always_increment_minor = false

custom_major_increment_regex

Type: String (optional)

Default: Inherits global setting

Custom regex pattern matched against commit messages to trigger a major version bump. This is additive — breaking change commits always trigger major bumps regardless of this setting. Overrides the global custom_major_increment_regex for this package.

In TOML double-quoted strings, backslashes must be escaped (write \\ to represent a single \ in the regex). For example, to match the literal text [BREAKING]:

[[package]]
path = "."
release_type = "node"
custom_major_increment_regex = "\\[BREAKING\\]"

custom_minor_increment_regex

Type: String (optional)

Default: Inherits global setting

Custom regex pattern matched against commit messages to trigger a minor version bump. This is additivefeat: commits always trigger minor bumps regardless of this setting. Overrides the global custom_minor_increment_regex for this package.

In TOML double-quoted strings, backslashes must be escaped (write \\ to represent a single \ in the regex). For example, to match the literal text [FEATURE]:

[[package]]
path = "."
release_type = "rust"
custom_minor_increment_regex = "\\[FEATURE\\]"

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

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

# Changelog customization
[changelog]
skip_ci = true
skip_chore = true
skip_miscellaneous = false
include_author = false

# Package definitions
[[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" }

Next Steps