create-t3-app-fork
Version:
Create web application with the t3 stack
61 lines (52 loc) • 1.71 kB
text/typescript
import type { Installer } from "./index";
import path from "path";
import fs from "fs-extra";
import { PKG_ROOT } from "../consts";
import { runPkgManagerInstall } from "../utils/runPkgManagerInstall";
export const trpcInstaller: Installer = async (
projectDir,
packageManager,
packages,
) => {
await runPkgManagerInstall({
packageManager,
projectDir,
packages: [
"react-query",
"superjson",
"@trpc/server",
"@trpc/client",
"@trpc/next",
"@trpc/react",
"zod",
],
devMode: false,
});
const trpcAssetDir = path.join(PKG_ROOT, "template/addons/trpc");
const apiHandlerSrc = path.join(trpcAssetDir, "api-handler.ts");
const apiHandlerDest = path.join(projectDir, "src/pages/api/trpc/[trpc].ts");
const utilsSrc = path.join(trpcAssetDir, "utils.ts");
const utilsDest = path.join(projectDir, "src/utils/trpc.ts");
const contextSrc = path.join(
trpcAssetDir,
packages.prisma.inUse ? "prisma-context.ts" : "base-context.ts",
);
const contextDest = path.join(projectDir, "src/server/router/context.ts");
const routerSrc = path.join(trpcAssetDir, "index-router.ts");
const routerDest = path.join(projectDir, "src/server/router/index.ts");
const exampleRouterSrc = path.join(
trpcAssetDir,
packages.prisma.inUse ? "example-prisma-router.ts" : "example-router.ts",
);
const exampleRouterDest = path.join(
projectDir,
"src/server/router/example.ts",
);
await Promise.all([
fs.copy(apiHandlerSrc, apiHandlerDest),
fs.copy(utilsSrc, utilsDest),
fs.copy(contextSrc, contextDest),
fs.copy(routerSrc, routerDest),
fs.copy(exampleRouterSrc, exampleRouterDest),
]);
};