← All docs

Configuration

Configure MigrationPilot with a YAML config file or package.json.

Config File Locations

MigrationPilot searches for config files in priority order, walking up from the current directory:

.migrationpilotrc.yml      # highest priority
.migrationpilotrc.yaml
migrationpilot.config.yml
migrationpilot.config.yaml
package.json               # "migrationpilot" key

Generate a Config File

Use the init command to generate a default configuration file:

migrationpilot init

Full Configuration Reference

Here is a complete configuration file with all available options:

# .migrationpilotrc.yml

# Extend a built-in preset: recommended, strict, ci, startup, enterprise
extends: "migrationpilot:recommended"

# Target PostgreSQL version (9-20)
pgVersion: 17

# Fail CI on severity level: critical, warning, never
failOn: critical

# Default migration file pattern
migrationPath: "migrations/**/*.sql"

# Per-rule configuration
rules:
  MP001: true                    # enable (default)
  MP037: false                   # disable a rule
  MP004:
    severity: warning            # downgrade from critical
  MP013:
    threshold: 5000              # custom threshold (default: 10000)
  MP014:
    threshold: 500000            # custom threshold (default: 1000000)

# Production context thresholds
thresholds:
  highTrafficQueries: 10000      # MP013: min query count
  largeTableRows: 1000000        # MP014: min row count
  redScore: 50                   # Risk score for RED
  yellowScore: 25                # Risk score for YELLOW

# Files to ignore (glob patterns)
ignore:
  - "migrations/seed_*.sql"
  - "migrations/test_*.sql"

# Audit logging (enterprise)
auditLog:
  enabled: true
  path: ./migrationpilot-audit.jsonl

Built-in Presets

MigrationPilot includes five presets you can extend. "recommended" uses default settings with failOn: critical. "strict" promotes all rules to critical severity and fails on warnings. "ci" is optimized for CI with failOn: critical and no ignore patterns. "startup" disables nitpicky rules for early-stage teams. "enterprise" enables maximum safety with audit logging.

# Use the strict preset
extends: "migrationpilot:strict"

# Override individual rules from the preset
rules:
  MP037: false   # disable in strict mode

Inline Disable Comments

Disable specific rules for individual statements with SQL comments:

-- migrationpilot-disable MP001
CREATE INDEX idx_users_email ON users (email);

-- migrationpilot-disable MP001,MP004
ALTER TABLE orders ADD COLUMN status text;

package.json Configuration

Alternatively, add configuration to your package.json under the "migrationpilot" key:

{
  "migrationpilot": {
    "pgVersion": 16,
    "failOn": "warning",
    "rules": {
      "MP037": false
    }
  }
}