kysely-ctl
kysely-ctl copied to clipboard
Command-line tool for Kysely
kysely-ctl
is the official command-line tool for Kysely. We strive to make it TypeScript-first, cross-platform (macOS, Linux, and Windows), and cross-runtime (Node.js, Bun, and Deno) compatible. We also aim to have feature parity with Knex.js's CLI.
Install
npm i -D kysely-ctl
Requires kysely >= 0.18.1.
Use
Configuration
Currently, a kysely.config.ts
file is required, in the project root OR .config
folder. Run kysely init
in your terminal to create one.
import { defineConfig } from "kysely-ctl";
export default defineConfig({
dialect, // a Kysely dialect instance OR the name of an underlying driver library (e.g. `'pg'`).
dialectConfig, // optional. when `dialect` is the name of an underlying driver library, `dialectConfig` is the options passed to the Kysely dialect that matches that library.
migrations: { // optional.
migrationFolder, // optional. name of migrations folder. default is `'migrations'`.
migrator, // optional. a `Kysely` migrator instance. default is `Kysely`'s `Migrator`.
provider, // optional. a `Kysely` migration provider instance. default is `kysely-ctl`'s `TSFileMigrationProvider`.
},
plugins, // optional. `Kysely` plugins list. default is `[]`.
});
Commands
For more information run kysely -h
in your terminal.
Migrate
The migrate
module mirrors Knex.js CLI's module of the same name.
knex migrate:<command>
Can now be called as either:
kysely migrate:<command>
or
kysely migrate <command>
[!NOTE]
rollback
without--all
flag is not supported, as Kysely doesn't keep track of "migration batches".
Seed
The seed
module mirrors Knex.js CLI's module of the same name.
knex seed:<command>
Can now be called as either:
kysely seed:<command>
or
kysely seed <command>
[!NOTE] We also provide
kysely seed list
, which is not part of Knex.js CLI.
Acknowledgements
acro5piano who built kysely-migration-cli and inspired this project.
UnJS's amazing tools that help power this project.
Knex.js team for paving the way.