prisma-migration-migrator
Version:
Replace Prisma as the migration engine with Knex, while keeping it as ORM
33 lines • 1.32 kB
JavaScript
import { promises as fs } from 'fs';
import path from 'path';
import { successLog, warningLog } from './textStyles.mjs';
export const packageJsonShortcutScripts = {
generate: {
name: 'migration:generate',
script: 'npx knex migrate:make migration | npx prisma-diff-to-knex-migration',
},
sync: {
name: 'migration:sync',
script: 'node ./sync-knex-prisma-migrations-history.mjs',
},
apply: {
name: 'migration:apply',
script: 'npm run migration:sync && npx knex migrate:latest && npx prisma generate',
},
};
export async function packageJsonScriptUpdate({ name, script, ignoreIfExists, }) {
const packageJsonPath = path.resolve('package.json');
const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');
const packageJson = JSON.parse(packageJsonContent);
if (!packageJson.scripts) {
packageJson.scripts = {};
}
if (ignoreIfExists && packageJson.scripts[name]) {
warningLog(`Script "${name}" already exists in package.json. Skipping`);
return;
}
packageJson.scripts[name] = script;
await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
successLog(`Script "${name}" added to package.json successfully.`);
}
//# sourceMappingURL=packageJsonScriptUpdate.mjs.map