Nyron
Getting started

Configuration

Configure Nyron for your project structure

Configuration

The nyron.config.ts file defines your versioning strategy and project structure.

Configuration File

import { defineConfig } from "@nyron/cli/config"

export default defineConfig({
  // GitHub repository (owner/repo)
  repo: "your-org/your-repo",
  
  // Projects to version (supports monorepos)
  projects: {
    // Key is the project name
    backend: {
      tagPrefix: "@my-app/backend@", // Git tag format
      path: "apps/backend",          // Path to project
    },
    frontend: {
      tagPrefix: "@my-app/frontend@",
      path: "apps/frontend",
    },
  },
})

Configuration Options

repo

Type: string
Required: Yes

Your GitHub repository in the format owner/repo.

repo: "your-org/your-repo"

projects

Type: Record<string, ProjectConfig>
Required: Yes

An object defining all projects in your repository. Each key is a project name, and the value contains:

  • tagPrefix: The prefix used for git tags (e.g., "v", "@pkg/name@")
  • path: The path to the project directory relative to repository root

Note: The tagPrefix you configure here is used for project tags (version tracking), not for nyron-release tags. Nyron-release tags always use the format nyron-release@* and are independent of your tagPrefix configuration. Your existing tags won't interfere with Nyron, and Nyron won't use them as release boundaries.

Monorepo Setup

For monorepos, define multiple projects with different tag prefixes:

import { defineConfig } from "@nyron/cli/config"

export default defineConfig({
  repo: "your-org/monorepo",
  projects: {
    api: {
      tagPrefix: "@monorepo/api@",
      path: "packages/api",
    },
    sdk: {
      tagPrefix: "@monorepo/sdk@",
      path: "packages/sdk",
    },
    cli: {
      tagPrefix: "@monorepo/cli@",
      path: "packages/cli",
    },
  },
})

Nyron will track each project independently based on their tag prefixes.

Understanding Tag Systems: Remember that Nyron uses two separate tag systems:

  • Project tags (from tagPrefix): Used for version tracking and created by nyron bump
  • Nyron-release tags (nyron-release@*): Used as release boundaries and created by nyron push-tag or nyron release

These are independent - your project tag prefixes don't affect nyron-release tags, and existing tags in your repo won't interfere with Nyron's operation.

Single Package Setup

For single-package repositories:

import { defineConfig } from "@nyron/cli/config"

export default defineConfig({
  repo: "your-org/single-package",
  projects: {
    main: {
      tagPrefix: "v",
      path: ".",
    },
  },
})