UNPKG

create-kyrix-app

Version:

A CLI tool to create a Kyrix app.

81 lines (72 loc) 2.11 kB
import fs from "fs"; import path from "path"; export const setupDependencies = (targetPath, ormChoice, dbChoice) => { let dependencies = {}; let devDependencies = {}; let scripts = {}; // Set dependencies based on ORM selection if (ormChoice === "prisma") { dependencies = { "@prisma/client": "^5.19.1", }; devDependencies = { prisma: "^5.19.1", }; scripts = { "db:migrate": "prisma migrate dev", "db:push": "prisma db push", "db:studio": "prisma studio", }; } else if (ormChoice === "drizzle") { scripts = { "db:generate": "drizzle-kit generate --config=drizzle.config.ts", "db:push": "drizzle-kit push --config=drizzle.config.ts", "db:studio": "drizzle-kit studio", }; if (dbChoice === "postgresql") { dependencies = { "drizzle-orm": "^0.33.0", pg: "^8.11.5", postgres: "^3.4.4", }; devDependencies = { "drizzle-kit": "^0.24.2", }; } else if (dbChoice === "mysql") { dependencies = { "drizzle-orm": "^0.33.0", mysql2: "^3.11.2", }; devDependencies = { "drizzle-kit": "^0.24.2", }; } } else if (dbChoice === "mongodb") { // MongoDB setup, default to Mongoose dependencies = { mongoose: "^7.0.0", }; } // Read the existing package.json const packageJsonPath = path.join(targetPath, "package.json"); const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8")); // Ensure devDependencies is not undefined in package.json if (!packageJson.devDependencies) { packageJson.devDependencies = {}; } // Merge ORM-related dependencies into the package.json packageJson.dependencies = { ...packageJson.dependencies, ...dependencies, }; packageJson.devDependencies = { ...packageJson.devDependencies, ...devDependencies, }; packageJson.scripts = { ...packageJson.scripts, ...scripts, }; // Write the updated package.json back to disk fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2)); };