{"id":47428,"library":"drizzle-migrations-liquibase","title":"drizzle-migrations-liquibase","description":"Bridges Drizzle ORM with Liquibase to eliminate migration conflicts in team environments. v1.2.1 (2025). Active development with monthly releases. Supports PostgreSQL, MySQL, SQLite, and SingleStore via two diff engines: a custom structural engine (default, PostgreSQL-only) and a drizzle-kit engine (hooks into drizzle-kit's own diff algorithms for all dialects). Key differentiators: rollback-safe migrations, no journal file conflicts, Liquibase checksum verification, team-friendly workflow, bidirectional diffing, and AST-based schema parsing. Requires Node >=18.","status":"active","version":"1.2.1","language":"javascript","source_language":"en","source_url":"https://github.com/danielkpl2/drizzle-migrations-liquibase","tags":["javascript","drizzle","drizzle-orm","drizzle-kit","drizzle-migration","drizzle-migrations","liquibase","migration","migrations"],"install":[{"cmd":"npm install drizzle-migrations-liquibase","lang":"bash","label":"npm"},{"cmd":"yarn add drizzle-migrations-liquibase","lang":"bash","label":"yarn"},{"cmd":"pnpm add drizzle-migrations-liquibase","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency for the drizzle-kit engine (opt-in) and for schema parsing via drizzle-kit internals","package":"drizzle-kit","optional":false},{"reason":"Peer dependency for schema definition and type inference","package":"drizzle-orm","optional":false},{"reason":"Core peer dependency for running Liquibase commands (node mode)","package":"liquibase","optional":false},{"reason":"Optional peer dependency for SQLite support","package":"better-sqlite3","optional":true},{"reason":"Optional peer dependency for MySQL/SingleStore support","package":"mysql2","optional":true},{"reason":"Optional peer dependency for PostgreSQL support","package":"pg","optional":true}],"imports":[{"note":"ESM-only since v1.0.0. CJS require will throw. TypeScript supports type definitions out of the box.","wrong":"const { diffSchemas } = require('drizzle-migrations-liquibase')","symbol":"diffSchemas","correct":"import { diffSchemas } from 'drizzle-migrations-liquibase'"},{"note":"Named export, not default export. Use { generateMigration }.","wrong":"import generateMigration from 'drizzle-migrations-liquibase'","symbol":"generateMigration","correct":"import { generateMigration } from 'drizzle-migrations-liquibase'"},{"note":"Both type and value exports available. For type-only usage, use 'import type'. The type is also exported as a value for runtime checks.","wrong":"import type { MigrationOptions } from 'drizzle-migrations-liquibase'","symbol":"MigrationOptions","correct":"import { MigrationOptions } from 'drizzle-migrations-liquibase'"},{"note":"Function name is camelCase, not PascalCase.","wrong":"import { ReverseEngineerSchema } from 'drizzle-migrations-liquibase'","symbol":"reverseEngineerSchema","correct":"import { reverseEngineerSchema } from 'drizzle-migrations-liquibase'"},{"note":"Use for programmatic schema loading. Avoids direct fs usage.","wrong":"","symbol":"loadSchemaFiles","correct":"import { loadSchemaFiles } from 'drizzle-migrations-liquibase'"}],"quickstart":{"code":"import { diffSchemas, generateMigration } from 'drizzle-migrations-liquibase';\nimport { drizzle } from 'drizzle-orm/node-postgres';\n// Ensure drizzle-kit, drizzle-orm, liquibase, and pg are installed\nconst db = drizzle(process.env.DATABASE_URL ?? '');\nconst schemaDir = './src/db/schema';\nconst migrationsDir = './migrations';\nconst outputDir = './migrations/liquibase';\nconst migrationName = 'add_users_table';\ntry {\n  const diff = await diffSchemas({ schemaDir, outputDir, db });\n  await generateMigration({ diff, migrationName, outputDir });\n  console.log('Migration generated');\n} catch (error) {\n  console.error('Failed:', error);\n}","lang":"typescript","description":"Shows programmatic use of diffSchemas and generateMigration to create a Liquibase migration from Drizzle schema files."},"warnings":[{"fix":"Add engine: 'custom' to the constructor options or config file to retain the old behavior.","message":"v1.2.0 changed the default engine from custom to drizzle-kit for multi-database support. Existing projects must opt-in to the custom engine via config.","severity":"breaking","affected_versions":">=1.2.0"},{"fix":"Switch to drizzle-kit engine by removing engine: 'custom' from config, or plan migration to drizzle-kit engine before v2.0.","message":"PostgreSQL-only custom engine will be removed in v2.0. Migrate to drizzle-kit engine for future compatibility.","severity":"deprecated","affected_versions":">=1.2.0"},{"fix":"Update drizzle-kit to >=0.31.0 or >=1.0.0-beta.1 (if using beta).","message":"The drizzle-kit engine requires drizzle-kit >=0.31.0 || >=1.0.0-beta.1. Using an older version will throw an import error.","severity":"gotcha","affected_versions":">=1.2.0"},{"fix":"Install the liquibase npm package: 'npm install liquibase' or configure to use a different mode.","message":"Liquibase node mode requires the liquibase npm package as a peer dependency. If using Docker or CLI mode, the package is optional but installation is still expected.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Rename schema files to .ts and ensure each file exports tables using 'export const tableName = ...'.","message":"Schema files must use .ts extension and export tables/relations using Drizzle's export pattern. Files with .js or .mjs extensions will be ignored.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Pass { writeToSchema: true } to reverseEngineerSchema or enable via CLI flag.","message":"Reverse mode (database-first) is read-only by default. Writing to schema files requires explicit flag in all versions.","severity":"breaking","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'18':87 '2025':18 'activ':19 'algorithm':56 'ast':81 'ast-bas':80 'base':82 'bidirect':77 'bridg':5 'checksum':71 'conflict':13,69 'custom':35 'default':38 'develop':20 'dialect':59 'dif':78 'diff':32,55 'differenti':61 'drizzl':2,6,45,51,89,91,94,97,100 'drizzle-kit':44,50,93 'drizzle-migr':96,99 'drizzle-migrations-liquibas':1 'drizzle-orm':90 'elimin':11 'engin':33,37,47 'environ':16 'file':68 'friend':75 'hook':48 'javascript':88 'journal':67 'key':60 'kit':46,52,95 'liquibas':4,9,70,102 'migrat':3,12,65,98,101,103,104 'month':22 'mysql':26 'node':86 'orm':7,92 'pars':84 'postgresql':25,40 'postgresql-on':39 'releas':23 'requir':85 'rollback':63 'rollback-saf':62 'safe':64 'schema':83 'singlestor':29 'sqlite':27 'structur':36 'support':24 'team':15,74 'team-friend':73 'two':31 'v1.2.1':17 'verif':72 'via':30 'workflow':76","created_at":"2026-06-07T16:51:28.392333+00:00","updated_at":"2026-06-07T16:51:28.392333+00:00","problems":[{"fix":"Run 'npm install drizzle-migrations-liquibase' and peer dependencies.","cause":"Package not installed or not in node_modules. Ensure npm/yarn/pnpm install was run.","error":"Error: Cannot find module 'drizzle-migrations-liquibase'"},{"fix":"Use 'import { diffSchemas } from 'drizzle-migrations-liquibase' instead of 'import diffSchemas from ...'.","cause":"Default import used instead of named import.","error":"TypeError: diffSchemas is not a function"},{"fix":"Update drizzle-kit to >=0.31.0 (or >=1.0.0-beta.1 for beta) using 'npm install drizzle-kit@latest'.","cause":"Outdated drizzle-kit version incompatible with the drizzle-kit engine.","error":"Error: The drizzle-kit engine requires drizzle-kit version >=0.31.0. Found version x.y.z."},{"fix":"Switch to the drizzle-kit engine by adding engine: 'drizzle-kit' to config, or use a PostgreSQL database.","cause":"Using non-PostgreSQL database with the default custom engine.","error":"Error: Unsupported database dialect. The custom engine only supports PostgreSQL."}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/danielkpl2/drizzle-migrations-liquibase#readme","github":"https://github.com/danielkpl2/drizzle-migrations-liquibase","docs":null,"changelog":null,"pypi":null,"npm":"drizzle-migrations-liquibase","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}