Registry / database / directus-migration-tools

directus-migration-tools

JSON →
library1.0.75jsnpmunverified

Directus Migration Tools (v1.0.75) is a utility library for generating Directus migration files programmatically. It provides helper functions to define collections, fields, and special field types (e.g., translations, files, WYSIWYG) as JavaScript objects, then compiles them into up/down migration functions compatible with Directus's migration system. The package simplifies creating repeatable, version-controlled schema migrations without manual SQL. It is actively maintained and updated by codihaus, with frequent releases on a weekly cadence. Key differentiators include its compositional API (generateField, generateSpecField), built-in support for Directus special fields (M2O, M2M, translations, sorting), and a test suite. It is designed for Directus v9+ and requires Node.js and knex.

npm install directus-migration-tools
INSTALL
IMPORT
SIG · DIRECTUS-MIGRATION
D
directus-migration-tools
databasejavascriptv1.0.75
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

generateField
const { generateField } = require('directus-migration-tools');
import { generateField } from 'directus-migration-tools';
Package is CommonJS-only; ESM imports will fail. Use require().
upCreateKnex
const { upCreateKnex } = require('directus-migration-tools');
import { upCreateKnex } from 'directus-migration-tools';
Named export for the up migration function. Must be used with knex instance.
downCreateKnex
const { downCreateKnex } = require('directus-migration-tools');
const { downCreate } = require('directus-migration-tools');
Full name is downCreateKnex. Incorrect alias will cause undefined.
generateSpecField
const { generateSpecField } = require('directus-migration-tools');
const { generateFieldSpec } = require('directus-migration-tools');
Object containing special field generators like translations, files, wysiwyg, sort, etc.

Creates a migration file defining a collection with fields, using upCreateKnex/downCreateKnex to apply/revert schema changes.

const { generateField, generateSpecField, upCreateKnex, downCreateKnex } = require('directus-migration-tools'); const config = [ { collection: { name: 'articles', meta: { icon: 'article', note: 'News articles' } }, fields: { id: generateField.genPrimaryKey('uuid'), title: generateField.genNormal('string', { meta: { width: 'full' } }), body: generateSpecField.wysiwyg({ meta: { width: 'full' } }) } } ]; exports.up = async function(knex) { await upCreateKnex(knex, config); }; exports.down = async function(knex) { await downCreateKnex(knex, config); };
Debug
Known issues
gotchaPackage is CommonJS-only; using ES import syntax (import) will throw an error.
fix
Use require() instead of import when consuming this package.
affects: <2.0
gotchaFields like 'id' or 'code' for primary keys must exactly match the generated column names; custom primary keys require 'uuid' or 'string' argument.
fix
For UUID primary keys: generateField.genPrimaryKey('uuid'); for string keys: generateField.genPrimaryKey('string').
affects: >=1.0
deprecatedgenerateField.genDatetime is deprecated; use generateSpecField.dateCreated or generateSpecField.dateUpdated instead.
fix
Replace genDatetime('date-created') with generateSpecField.dateCreated({}).
affects: >=1.0.60
breakingMigration file must be placed in extensions/migrations/ folder for Directus to pick up.
fix
Ensure the migration file is saved under extensions/migrations/ with correct naming: [identity]-name.js.
affects: >=1.0
Errors
Common errors & fixes
TypeError: upCreateKnex is not a function
Incorrect import or package missing from node_modules.
fix
Run 'npm install directus-migration-tools' and ensure const { upCreateKnex } = require('directus-migration-tools'); is used.
Error: Cannot find module 'directus-migration-tools'
Package not installed in the project.
fix
Install the package: npm install directus-migration-tools.
ReferenceError: generateField is not defined
Missing require for generateField, or trying to use it without importing.
fix
Add const { generateField } = require('directus-migration-tools'); at the top of the migration file.
Error: Collection 'xyz' already exists in the config array
Duplicate collection name in config array.
fix
Remove the duplicate entry or rename one of the collections.
Upgrade
Version history
1.0.75latest on npm
Audit
Dependencies

No dependency data recorded yet.

Agent activity
9 hits · last 30 days
node
8
Resources
directus-migration-tools — npm install directus-migration-tools · libregistry