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

Releasaurus works great out-of-the-box with zero configuration, but provides extensive customization options through an optional releasaurus.toml configuration file. This file allows you to customize changelog generation, define multiple packages within a repository, and fine-tune the release process to match your project's specific needs.

Configuration File Location

Releasaurus looks for a releasaurus.toml file in your project's root directory. If no configuration file is found, sensible defaults are used that work for most single-package repositories.

my-project/
├── releasaurus.toml    # ← Configuration file (optional)
├── src/
├── README.md
└── ...

Configuration Structure

The configuration file uses TOML format with two main sections:

  • [changelog] - Customizes changelog generation and formatting
  • [[package]] - Defines packages within the repository (can have multiple)

Default Configuration

This is the default configuration that is used if there is no specific user defined configuration provided.

# releasaurus.toml using default changelog body configuration

[changelog]
header = ""
body = "{% if version -%}
    # [{{ version | trim_start_matches(pat="v") }}]({{ extra.release_link_base }}/{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
{% else -%}
    # [unreleased]
{% endif -%}
{% for group, commits in commits | filter(attribute="merge_commit", value=false) | group_by(attribute="group") %}
    ### {{ group | striptags | trim | upper_first }}
    {% for commit in commits %}
      {% if commit.breaking -%}
        {% if commit.scope %}_({{ commit.scope }})_ {% endif -%}[**breaking**]: {{ commit.message | upper_first }} [_({{ commit.id | truncate(length=8, end="") }})_]({{ extra.commit_link_base }}/{{ commit.id }})
        {% if commit.body -%}
        > {{ commit.body }}
        {% endif -%}
        {% if commit.breaking_description -%}
        > {{ commit.breaking_description }}
        {% endif -%}
      {% else -%}
        - {% if commit.scope %}_({{ commit.scope }})_ {% endif %}{{ commit.message | upper_first }} [_({{ commit.id | truncate(length=8, end="") }})_]({{ extra.commit_link_base }}/{{ commit.id -}})
      {% endif -%}
    {% endfor %}
{% endfor %}"
footer = "Generated by Releasaurus 🦕"

[[package]]
path = "."
tag_prefix = "v"

Changelog Configuration

The [changelog] section allows you to customize how changelogs are generated using Tera templating engine.

Available Templates

body (Required)

The main changelog content template. This defines how each release section is formatted.

header (Optional)

Static content to prepended to the top of the changelog.

Static content to append to the bottom of the changelog.

Example:

[changelog]
header = "# Changelog"
footer = "Company footer"

Monorepo with Multiple Packages

# Frontend package
[[package]]
path = "./apps/frontend"
tag_prefix = "frontend-v"

# Backend API
[[package]]
path = "./apps/api"
tag_prefix = "api-v"

# Shared library
[[package]]
path = "./packages/shared"
tag_prefix = "shared-v"

# CLI tool
[[package]]
path = "./packages/cli"
tag_prefix = "cli-v"

Next Steps