Configuration
Kysera CLI configuration file reference.
Configuration File
Create kysera.config.ts in your project root:
import { defineConfig } from '@kysera/cli'
export default defineConfig({
// Configuration options
})
Full Configuration
import { defineConfig } from '@kysera/cli'
export default defineConfig({
// Database connection
database: {
dialect: 'postgres', // postgres | mysql | sqlite
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '5432'),
database: process.env.DB_NAME || 'myapp',
user: process.env.DB_USER || 'postgres',
password: process.env.DB_PASSWORD,
pool: {
min: 2,
max: 10
},
ssl: process.env.DB_SSL === 'true'
},
// Migrations
migrations: {
directory: './migrations',
tableName: 'kysera_migrations',
timezone: 'UTC'
},
// Code generation
generation: {
outputDir: './src/generated',
typescript: true,
validation: 'zod' // zod | none
},
// Testing
testing: {
seeds: './seeds',
fixtures: './fixtures',
isolation: 'transaction' // transaction | schema | database
},
// Plugins
plugins: {
'@kysera/soft-delete': {
enabled: true,
deletedAtColumn: 'deleted_at'
},
'@kysera/timestamps': {
enabled: true,
createdAtColumn: 'created_at',
updatedAtColumn: 'updated_at'
},
'@kysera/audit': {
enabled: false
},
'@kysera/rls': {
enabled: false
}
}
})
Database Configuration
PostgreSQL
database: {
dialect: 'postgres',
host: 'localhost',
port: 5432,
database: 'myapp',
user: 'postgres',
password: 'secret',
pool: { min: 2, max: 10 },
ssl: {
rejectUnauthorized: false // For self-signed certs
}
}
MySQL
database: {
dialect: 'mysql',
host: 'localhost',
port: 3306,
database: 'myapp',
user: 'root',
password: 'secret'
}
SQLite
database: {
dialect: 'sqlite',
database: './data/app.db'
}
Environment Variables
Use environment variables for sensitive data:
database: {
host: process.env.DB_HOST,
password: process.env.DB_PASSWORD
}
.env File
DB_HOST=localhost
DB_PORT=5432
DB_NAME=myapp
DB_USER=postgres
DB_PASSWORD=secret
Multiple Environments
import { defineConfig } from '@kysera/cli'
const env = process.env.NODE_ENV || 'development'
const databases = {
development: {
host: 'localhost',
database: 'myapp_dev'
},
test: {
host: 'localhost',
database: 'myapp_test'
},
production: {
host: process.env.DB_HOST,
database: process.env.DB_NAME
}
}
export default defineConfig({
database: {
dialect: 'postgres',
...databases[env],
user: process.env.DB_USER,
password: process.env.DB_PASSWORD
}
})
Plugin Configuration
Soft Delete
plugins: {
'@kysera/soft-delete': {
enabled: true,
deletedAtColumn: 'deleted_at',
tables: ['users', 'posts'] // Only these tables
}
}
Timestamps
plugins: {
'@kysera/timestamps': {
enabled: true,
createdAtColumn: 'created_at',
updatedAtColumn: 'updated_at',
dateFormat: 'iso' // iso | unix | date
}
}
Audit
plugins: {
'@kysera/audit': {
enabled: true,
auditTable: 'audit_logs',
excludeTables: ['audit_logs', 'sessions']
}
}
TypeScript Configuration
The config file uses TypeScript. Ensure your tsconfig.json supports it:
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler"
}
}
CLI Overrides
Command-line options override config file:
# Override database
kysera migrate up --config ./other-config.ts
# Override with env
DB_NAME=other_db kysera migrate status