https://github.com/mattmess1221/nuxt-drizzle-migrations
Automatic Drizzle migrations in Nuxt
https://github.com/mattmess1221/nuxt-drizzle-migrations
database drizzle migrations nuxt-module
Last synced: 6 months ago
JSON representation
Automatic Drizzle migrations in Nuxt
- Host: GitHub
- URL: https://github.com/mattmess1221/nuxt-drizzle-migrations
- Owner: mattmess1221
- License: mit
- Created: 2026-01-13T18:06:14.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-01-13T19:45:14.000Z (6 months ago)
- Last Synced: 2026-01-13T20:37:05.235Z (6 months ago)
- Topics: database, drizzle, migrations, nuxt-module
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/nuxt-drizzle-migrations
- Size: 126 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Nuxt Drizzle Migrations
A Nuxt module to automatically apply Drizzle migrations in your Nuxt application.
## Features
- Automatic database migration on server startup
- Configurable migration storage options
## Installation
Install the module using your preferred package manager:
```bash
pnpm add -D nuxt-drizzle-migrations
```
Then add it to your `nuxt.config.ts`:
```ts
export default defineNuxtConfig({
modules: ['nuxt-drizzle-migrations'],
})
```
## Usage
> [!NOTE]
> Configuration requires setting up Drizzle and your database connection. See the [Drizzle documentation](https://orm.drizzle.team/docs/get-started) for more details.
Instructions will assume the following `drizzle.config.ts` file.
```ts
import type { Config } from 'drizzle-kit'
export default {
schema: './server/database/schema.ts',
out: './server/database/migrations',
dialect: 'postgresql',
dbCredentials: {
url: process.env.DATABASE_URL!,
}
} satisfies Config
```
Nuxt Drizzle Migrations needs an instance of a Drizzle database to run migrations. Since the Nitro server doesn't support provides like Nuxt, you will need to register a composable named `useDrizzle` which returns your Drizzle database instance.
```ts
// server/utils/drizzle.ts
import { drizzle } from 'drizzle-orm/node-postgres'
import * as schema from '~~/server/database/schema'
export function useDrizzle() {
return drizzle({
connection: process.env.DATABASE_URL!,
schema,
})
}
```
If you need to do any custom post-migration tasks, you can hook into the migration process using Nitro hooks. The `drizzle:migrations:after` hook is called after all migrations have been applied.
```ts
// server/plugins/drizzle-migrations.ts
import { defineNitroPlugin } from 'nitropack/runtime'
export default defineNitroPlugin(async (nitroApp) => {
nitroApp.hooks.hook('drizzle:migrations:after', async () => {
// Custom post-migration tasks
})
})
```