MCPcopy
hub / github.com/t3-oss/create-t3-app / prismaInstaller

Function prismaInstaller

src/installers/prisma.ts:8–60  ·  view source on GitHub ↗
({
  projectDir,
  runPkgManagerInstall,
  pkgManager,
  packages,
  noInstall,
})

Source from the content-addressed store, hash-verified

6import { execa } from "~/utils/execAsync.js";
7
8export const prismaInstaller: Installer = async ({
9 projectDir,
10 runPkgManagerInstall,
11 pkgManager,
12 packages,
13 noInstall,
14}) => {
15 await runPkgManagerInstall({
16 packages: ["prisma"],
17 devMode: true,
18 });
19 await runPkgManagerInstall({
20 packages: ["@prisma/client"],
21 });
22
23 const prismaAssetDir = path.join(PKG_ROOT, "template/addons/prisma");
24
25 const schemaSrc = path.join(
26 prismaAssetDir,
27 packages?.nextAuth.inUse ? "auth-schema.prisma" : "schema.prisma",
28 );
29 const schemaDest = path.join(projectDir, "prisma/schema.prisma");
30
31 const clientSrc = path.join(prismaAssetDir, "client.ts");
32 const clientDest = path.join(projectDir, "src/server/db/client.ts");
33
34 const sampleApiRouteSrc = path.join(prismaAssetDir, "sample-api.ts");
35 const sampleApiRouteDest = path.join(projectDir, "src/pages/api/examples.ts");
36
37 // add postinstall script to package.json
38 const packageJsonPath = path.join(projectDir, "package.json");
39
40 const packageJsonContent = fs.readJSONSync(packageJsonPath) as PackageJson;
41 packageJsonContent.scripts!.postinstall = "prisma generate"; //eslint-disable-line @typescript-eslint/no-non-null-assertion
42
43 await Promise.all([
44 fs.copy(schemaSrc, schemaDest),
45 fs.copy(clientSrc, clientDest),
46 fs.copy(sampleApiRouteSrc, sampleApiRouteDest),
47 fs.writeJSON(packageJsonPath, packageJsonContent, {
48 spaces: 2,
49 }),
50 ]);
51
52 // only generate client if we have installed the dependencies
53 if (!noInstall) {
54 const generateClientCmd =
55 pkgManager === "npm"
56 ? "npx prisma generate"
57 : `${pkgManager} prisma generate`;
58 await execa(generateClientCmd, { cwd: projectDir });
59 }
60};

Callers

nothing calls this directly

Calls 1

runPkgManagerInstallFunction · 0.85

Tested by

no test coverage detected