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.jsonlBuilt-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
}
}
}