Registry / database / directus-migration-v2

directus-migration-v2

JSON →
library0.0.17jsnpmunverified

A migration helper library for Directus v9/v10 that simplifies creating and managing schema migrations using a declarative field generation API. Current version 0.0.17 provides utility functions for generating common field types (primary key, status, sort, timestamps, user references), special interfaces (radio buttons, repeaters, images, toggles, dropdowns, WYSIWYG), and relationships (M2O, O2M, M2M). Active development with monthly releases. Key differentiator: eliminates boilerplate by providing pre-built field generators tailored to Directus schema, unlike raw Knex or direct API calls.

npm install directus-migration-v2
INSTALL
IMPORT
SIG · DIRECTUS-MIGRATION
D
directus-migration-v2
databasejavascriptv0.0.17
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
import { generateField } from 'directus-migration-v2'
const { generateField } = require('directus-migration-v2')
ESM-only package; CommonJS require will fail.
generateSpecField
import { generateSpecField } from 'directus-migration-v2'
const generateSpecField = require('directus-migration-v2').generateSpecField
Same ESM restriction; named import required.
upCreateKnex
import { upCreateKnex } from 'directus-migration-v2'
import upCreateKnex from 'directus-migration-v2'
Default export does not exist; must use named import.
downCreateKnex
import { downCreateKnex } from 'directus-migration-v2'
defaultFields
const { defaultFields } = { defaultFields: { id: generateField.genPrimaryKey(), ... } }
import { defaultFields } from 'directus-migration-v2'
defaultFields is not exported from the package; must define locally as shown in docs.

Shows a complete migration file using directus-migration-v2 with default fields, a normal field, a WYSIWYG special field, and a M2O relation.

import { generateField, generateSpecField, upCreateKnex, downCreateKnex } from 'directus-migration-v2' export const config = [ { collection: { name: 'articles' }, fields: { id: generateField.genPrimaryKey(), status: generateSpecField.status(), sort: generateSpecField.sort(), date_created: generateSpecField.dateCreated(), date_updated: generateSpecField.dateUpdated(), user_created: generateSpecField.userCreated(), user_updated: generateSpecField.userUpdated(), title: generateField.genNormal('string', { meta: { interface: 'input', width: 'full', required: true } }), body: generateSpecField.wysiwyg(), category: generateField.generateM2o('categories', { field_o2m: { create: false }, meta: { width: 'half' } }) } } ] export async function up(knex) { await upCreateKnex(knex, config) } export async function down(knex) { await downCreateKnex(knex, config) }
Debug
Known issues
breakingMigrations must be named with format `[identifier]-[name].mjs` (e.g., 20201202A-my-migration.mjs) and placed in Directus `extensions/migrations` folder.
fix
Ensure file naming follows the convention and location.
affects: >=0.0.1
gotchaThe package is ESM-only (.mjs extension required). Using CommonJS require() will throw an error.
fix
Use import syntax and .mjs file extension.
affects: >=0.0.1
deprecatedgenerateField.genPrimaryKey() may not exist in older versions; check that the function is available.
fix
Upgrade to >=0.0.10 or use genPrimaryKey from generateSpecField.
affects: <0.0.10
gotchagenerateField.generateM2m requires 5 arguments; missing any will silently fail.
fix
Validate arguments: related_collection, temp_collection, options, { field_left, field_right, fields_data }.
affects: >=0.0.1
gotchaThe config array must contain at least one object with a collection.name; empty array will cause upCreateKnex to do nothing.
fix
Always provide a valid collection name.
affects: >=0.0.1
breakingDirectus extensions/migrations folder is only processed when Directus is running; offline migrations require manual script execution.
fix
Run migrations via Directus CLI or server startup (auto-detected).
affects: >=0.0.1
Errors
Common errors & fixes
Error: Cannot find module 'directus-migration-v2'
Package not installed or incorrect import path.
fix
npm install directus-migration-v2
SyntaxError: Cannot use import statement outside a module
Using .js file instead of .mjs or missing type:module in package.json.
fix
Rename file to .mjs extension.
TypeError: (0 , _directusMigrationV2.generateField) is not a function
Importing `generateField` incorrectly (e.g., default import).
fix
Use named import: import { generateField } from 'directus-migration-v2'
Knex: Unknown argument(s) for createTable: ...
Passing invalid schema object to upCreateKnex (e.g., missing required meta properties).
fix
Check field definition; ensure genNormal/other generators are used correctly.
Cannot read property 'genPrimaryKey' of undefined
Using old version where genPrimaryKey is not in generateField.
fix
Upgrade to latest version (>=0.0.10).
Upgrade
Version history
0.0.17latest on npm
Audit
Dependencies
knexrequiredUsed for database schema operations (createTable, alterTable, etc.)
Agent activity
10 hits · last 30 days
node
8
Amazon
1
Resources