Skip to content

About this page

On this page

Configuration ​

A project is driven by a single dbx.config.ts:

dbx.config.ts
ts
import { defineConfig } from '@deltabox/toolchain';

export default defineConfig({
    toolchain: {
        project: {
            type: 'monorepo-root',
            name: 'acme',
            scope: '@acme',
        },
        ci: {
            ci: true,
            changelog: {
                branches: { main: 'main', dev: 'dev' },
                commitlint: { scopes: ['api', 'web', 'deps'] },
            },
        },
        tsconfig: { refs: true },
        fmt: { vscode: true, oxc: { semi: true, singleQuote: true } },
        lint: { oxc: { ignorePatterns: ['dist/**'] } },
        vite: {
            test: { include: ['src/**/*.test.ts'] },
        },
        watch: { debounce: 150 },
    },
});

The @deltabox/toolchain settings live under the toolchain key, so a dbx.config.ts can host other dbx concerns alongside it.

Each section has its own guide: Project, CI + Changelog, tsconfig, Formatting & linting, Vite+, Watch, Logger and Providers.

Where to start ​

  • Opt-in by presence — which sections run, and how nested sections like ci.changelog and the individual workflows opt in.
  • Nested configs — how a workspace config merges over its root.
  • defineConfig — object, promise or callback.
  • Config file names — the file names the loader probes.
  • Hooks — lifecycle hooks in a .ts/.js config.
  • Logging — the logger section and CLI overrides.
  • Providers — provider passthrough colour settings.
  • Vite+ — the full Vite+ config and the generated shim.
  • Programmatic API — load + sync from code.

The generated, exhaustive section reference is dbx.config.