{"id":42621,"library":"ddl-manager","title":"ddl-manager","description":"ddl-manager (v2.4.32-alpha) is a CLI tool for storing PostgreSQL functions and triggers in files and synchronizing them with a database. It supports building (migrating from files to DB), watching for file changes, and dumping (exporting DB objects to files). Unlike general migration tools, it focuses specifically on managing procedural objects and offers a configuration file for database connection and parsing options. Note: version includes '-alpha', indicating it is still in development.","status":"active","version":"2.4.32-alpha","language":"javascript","source_language":"en","source_url":"https://github.com/eprincev-egor/ddl-manager","tags":["javascript","postgres","ddl","sql","trigger","procedure","store","parser","migration","typescript"],"install":[{"cmd":"npm install ddl-manager","lang":"bash","label":"npm"},{"cmd":"yarn add ddl-manager","lang":"bash","label":"yarn"},{"cmd":"pnpm add ddl-manager","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Runtime peer dependency for database connection (pino-based logger)","package":"postgres","optional":false}],"imports":[{"note":"Provides named exports for programmatic use; no default export.","wrong":"import ddlManager from 'ddl-manager'","symbol":"default","correct":"import { build, dump, watch } from 'ddl-manager'"},{"note":"ESM-only package; use import syntax in Node >= 12.","wrong":"const { build } = require('ddl-manager')","symbol":"build","correct":"import { build } from 'ddl-manager'"},{"note":"CLI command also available via 'ddl-manager watch'.","wrong":"require('ddl-manager').watch","symbol":"watch","correct":"import { watch } from 'ddl-manager'"}],"quickstart":{"code":"import { build } from 'ddl-manager'\n\nconst config = {\n  host: process.env.PGHOST ?? 'localhost',\n  port: parseInt(process.env.PGPORT ?? '5432'),\n  database: process.env.PGDATABASE ?? 'mydb',\n  user: process.env.PGUSER ?? 'postgres',\n  password: process.env.PGPASSWORD ?? '',\n  folder: './ddl'\n}\n\nbuild(config)\n  .then(() => console.log('Build complete'))\n  .catch(console.error)","lang":"typescript","description":"Programmatic example of using build() to migrate SQL files to PostgreSQL."},"warnings":[{"fix":"Use import syntax or dynamic import() instead of require().","message":"v2.0.0 switched from CJS to ESM. require() calls will fail.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Set PGUSER environment variable instead of using --user.","message":"The --user flag is deprecated in favor of PGUSER environment variable. It may be removed in a future version.","severity":"deprecated","affected_versions":">=2.3.0"},{"fix":"Use dump with --unfreeze=true to get a snapshot before building.","message":"Build command by default overwrites existing procedures/triggers in database. Runs with --force flag implicitly.","severity":"gotcha","affected_versions":"*"}],"env_vars":null,"search_vec":"'alpha':70 'build':28 'chang':37 'cli':10 'configur':59 'connect':63 'databas':25,62 'db':33,41 'ddl':2,5,79 'ddl-manag':1,4 'develop':76 'dump':39 'export':40 'file':19,31,36,44,60 'focus':50 'function':15 'general':46 'includ':69 'indic':71 'javascript':77 'manag':3,6,53 'migrat':29,47,85 'note':67 'object':42,55 'offer':57 'option':66 'pars':65 'parser':84 'postgr':78 'postgresql':14 'procedur':54,82 'specif':51 'sql':80 'still':74 'store':13,83 'support':27 'synchron':21 'tool':11,48 'trigger':17,81 'typescript':86 'unlik':45 'v2.4.32-alpha':7 'version':68 'watch':34","created_at":"2026-06-05T16:55:51.611346+00:00","updated_at":"2026-06-05T16:55:51.611346+00:00","problems":[{"fix":"Use import statement or enable ESM in your project (e.g., add 'type': 'module' in package.json).","cause":"Package is ESM-only; require() does not work.","error":"Error: Cannot find module 'ddl-manager'"},{"fix":"Switch to import syntax or use dynamic import().","cause":"Using require() to load an ESM module.","error":"SyntaxError: Unexpected token 'export'"},{"fix":"Change import to: import { build } from 'ddl-manager'","cause":"Importing default export instead of named export.","error":"TypeError: build is not a function"},{"fix":"Ensure PostgreSQL is running and check config (host, port, user, password).","cause":"PostgreSQL not running or wrong connection parameters.","error":"Connection refused: localhost:5432"},{"fix":"Remove --user flag and set PGUSER environment variable.","cause":"Using deprecated --user flag.","error":"The --user flag is deprecated. Please use the PGUSER environment variable instead."}],"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/eprincev-egor/ddl-manager#readme","github":"https://github.com/eprincev-egor/ddl-manager","docs":null,"changelog":null,"pypi":null,"npm":"ddl-manager","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}