Configuration

Customize Shipmark to fit your workflow.

Configuration File

Shipmark uses .shipmarkrc.yml in your project root. Create one with:

$ shipmark init

Full Configuration Example

changelog:
  file: "CHANGELOG.md"
  includeHash: true
  includeDate: true

version:
  files:
    - "package.json"                    # Node.js
    - "pyproject.toml"                  # Python (PEP 621, Poetry, Setuptools)
    - path: "helm/values.yaml"          # YAML with custom key
      key: "image.tag"
      prefix: ""                        # No "v" prefix for Docker tags
  tagPrefix: "v"
  tagMessage: "Release {version}"
  commitMessage: "chore(release): {version}"
  syncCheck: true                       # Warn if versions differ

commits:
  conventional: true

git:
  push: true
  pushTags: true
  signTags: false
  signCommits: false

Multi-File Version Support

Shipmark can update versions across multiple file types, perfect for mixed technology stacks.

Supported File Types

File Type Auto-detected Example
package.json Yes "package.json"
pyproject.toml Yes (PEP 621, Poetry, Setuptools) "pyproject.toml"
*.yaml / *.yml With key path path: "values.yaml", key: "image.tag"

YAML File Configuration

For YAML files (Helm values, Kubernetes manifests), specify the key path using dot notation:

version:
  files:
    - path: "helm/values.yaml"
      key: "image.tag"           # Dot notation for nested keys
      prefix: ""                 # Optional: override tag prefix

Monorepo Example

Perfect for React + Python monorepos with Helm deployments:

version:
  files:
    - "frontend/package.json"
    - "backend/pyproject.toml"
    - path: "deploy/helm/values.yaml"
      key: "image.tag"
      prefix: ""
  syncCheck: true

Configuration Options

changelog

Option Type Default Description
file string "CHANGELOG.md" Changelog file path
includeHash boolean true Include commit hashes in changelog
includeDate boolean true Include release date in header
includeAuthor boolean false Include commit author

version

Option Type Default Description
files (string | object)[] ["package.json"] Files to update version in. Can be strings or objects with path/key/prefix
tagPrefix string "v" Prefix for git tags
tagMessage string "Release {version}" Tag annotation message
commitMessage string "chore(release): {version}" Release commit message
syncCheck boolean false Warn if versions differ between files before release

File Entry Object Options

Option Type Required Description
path string Yes Path to the file
key string For YAML Dot notation path to version (e.g., "image.tag")
prefix string No Override version prefix (empty string for no prefix)

git

Option Type Default Description
push boolean true Push commits to remote
pushTags boolean true Push tags to remote
signTags boolean false GPG sign tags
signCommits boolean false GPG sign commits