UNPKG

create-cen-app

Version:
47 lines (39 loc) 1.4 kB
import fs from "fs-extra"; import path from "path"; import { type PackageJson } from "type-fest"; import { PKG_ROOT } from "~/consts.js"; import { type Installer } from "~/installers/index.js"; import { addPackageDependency } from "~/utils/addPackageDependency.js"; export const prismaInstaller: Installer = ({ frontendDir, packages }) => { addPackageDependency({ frontendDir, dependencies: ["prisma"], devMode: true, }); addPackageDependency({ frontendDir, dependencies: ["@prisma/client"], devMode: false, }); const extrasDir = path.join(PKG_ROOT, "template/extras"); const schemaSrc = path.join( extrasDir, "prisma/schema", packages?.nextAuth.inUse ? "with-auth.prisma" : "base.prisma", ); const schemaDest = path.join(frontendDir, "prisma/schema.prisma"); const clientSrc = path.join(extrasDir, "src/server/db.ts"); const clientDest = path.join(frontendDir, "src/server/db.ts"); // add postinstall script to package.json const packageJsonPath = path.join(frontendDir, "package.json"); const packageJsonContent = fs.readJSONSync(packageJsonPath) as PackageJson; packageJsonContent.scripts = { ...packageJsonContent.scripts, postinstall: "prisma generate", }; fs.copySync(schemaSrc, schemaDest); fs.copySync(clientSrc, clientDest); fs.writeJSONSync(packageJsonPath, packageJsonContent, { spaces: 2, }); };