npm.io
0.6.2 • Published yesterdayCLI

@memberjunction/skyway-cli

Licence
MIT
Version
0.6.2
Deps
6
Size
79 kB
Vulns
0
Weekly
0

@memberjunction/skyway-cli

Command-line interface for Skyway — a TypeScript-native Flyway-compatible database migration tool for SQL Server.

Installation

npm install -g @memberjunction/skyway-cli

Or as a project dependency:

npm install @memberjunction/skyway-cli

Usage

# Apply pending migrations
skyway migrate --server localhost --database my_app --user sa --password secret --locations ./migrations

# Show migration status
skyway info

# Validate applied migrations against local files
skyway validate

# Baseline an existing database at a version
skyway baseline --baseline-version 202601122300

# Repair history table (remove failed entries, realign checksums)
skyway repair

# Clean database (drop all objects in the schema)
skyway clean

# Create or drop the database
skyway create-db
skyway drop-db

# Dry-run mode (show what would be applied without executing)
skyway migrate --dry-run

# Quiet mode (suppress per-migration output)
skyway migrate --quiet

Commands

Command Description
skyway migrate Apply pending migrations
skyway info Show migration status
skyway validate Validate applied migration checksums
skyway clean Drop all objects in the configured schema
skyway baseline Baseline the database at a version
skyway repair Remove failed entries and realign checksums
skyway create-db Create the target database
skyway drop-db Drop the target database

Flags

Flag Description
-s, --server <host> SQL Server hostname
-p, --port <port> SQL Server port
-d, --database <name> Database name
-u, --user <user> Database user
-P, --password <pass> Database password
-l, --locations <paths> Migration locations (comma-separated)
--schema <schema> Default schema name
--table <table> History table name
--baseline-version <ver> Baseline version
--baseline-on-migrate Auto-baseline on empty database
--transaction-mode <mode> per-run (default) or per-migration
--dry-run Show pending migrations without executing
-q, --quiet Suppress per-migration output
--config <path> Path to config file
--placeholder <key=value> Set a placeholder (repeatable)

Configuration File

Create a skyway.json in your project root instead of passing flags:

{
  "Database": {
    "Server": "localhost",
    "Port": 1433,
    "Database": "my_app",
    "User": "sa",
    "Password": "${SQL_PASSWORD}"
  },
  "Migrations": {
    "Locations": ["./migrations"],
    "DefaultSchema": "dbo",
    "HistoryTable": "flyway_schema_history",
    "BaselineOnMigrate": true
  },
  "Placeholders": {
    "flyway:defaultSchema": "dbo"
  },
  "TransactionMode": "per-migration"
}

Environment variables in ${...} syntax are expanded. A .env file is also loaded automatically if present.

Also Available

License

MIT

Keywords