Add setup warnings and handle no-ORM auth

This commit is contained in:
Aman Varshney
2025-04-20 20:19:10 +05:30
parent 9d040371c9
commit b5267e00a0
4 changed files with 59 additions and 14 deletions

View File

@@ -0,0 +1,5 @@
---
"create-better-t-stack": patch
---
Add setup warnings and handle no-ORM auth

View File

@@ -43,6 +43,16 @@ export function displayPostInstallInstructions(
const starlightInstructions = addons?.includes("starlight")
? getStarlightInstructions(runCmd)
: "";
const hasWeb = frontend?.some((f) =>
["tanstack-router", "react-router", "next", "tanstack-start"].includes(f),
);
const hasNative = frontend?.includes("native");
const bunWebNativeWarning =
packageManager === "bun" && hasNative && hasWeb
? getBunWebNativeWarning()
: "";
const noOrmWarning =
database !== "none" && orm === "none" ? getNoOrmWarning() : "";
const hasTanstackRouter = frontend?.includes("tanstack-router");
const hasTanstackStart = frontend?.includes("tanstack-start");
@@ -83,7 +93,7 @@ ${
lintingInstructions ? `\n${lintingInstructions.trim()}` : ""
}${pwaInstructions ? `\n${pwaInstructions.trim()}` : ""}${
starlightInstructions ? `\n${starlightInstructions.trim()}` : ""
}
}${noOrmWarning ? `\n${noOrmWarning.trim()}` : ""}${bunWebNativeWarning ? `\n${bunWebNativeWarning.trim()}` : ""}
${pc.bold("Update all dependencies:\n")}${pc.cyan(tazeCommand)}
@@ -165,3 +175,11 @@ function getStarlightInstructions(runCmd?: string): string {
"•",
)} Build docs site: ${`cd apps/docs && ${runCmd} build`}\n`;
}
function getNoOrmWarning(): string {
return `\n${pc.yellow("WARNING:")} Database selected without an ORM. Features requiring database access (e.g., examples, auth) need manual setup.\n`;
}
function getBunWebNativeWarning(): string {
return `\n${pc.yellow("WARNING:")} 'bun' might cause issues with web + native apps in a monorepo. Use 'pnpm' if problems arise.\n`;
}

View File

@@ -519,14 +519,23 @@ export async function handleExtras(
context: ProjectConfig,
): Promise<void> {
if (context.packageManager === "pnpm") {
const src = path.join(PKG_ROOT, "templates/extras/pnpm-workspace.yaml");
const dest = path.join(projectDir, "pnpm-workspace.yaml");
if (await fs.pathExists(src)) {
await fs.copy(src, dest);
const pnpmWorkspaceSrc = path.join(
PKG_ROOT,
"templates/extras/pnpm-workspace.yaml",
);
const pnpmWorkspaceDest = path.join(projectDir, "pnpm-workspace.yaml");
if (await fs.pathExists(pnpmWorkspaceSrc)) {
await fs.copy(pnpmWorkspaceSrc, pnpmWorkspaceDest);
} else {
}
}
if (context.frontend.includes("native")) {
const npmrcSrc = path.join(PKG_ROOT, "templates/extras/.npmrc");
const npmrcDest = path.join(projectDir, ".npmrc");
if (await fs.pathExists(npmrcSrc)) {
await fs.copy(npmrcSrc, npmrcDest);
} else {
consola.warn(
pc.yellow("Warning: pnpm-workspace.yaml template not found."),
);
}
}
}

View File

@@ -1,25 +1,28 @@
import { betterAuth } from "better-auth";
{{#if (eq orm "prisma")}}
import { betterAuth } from "better-auth";
import { prismaAdapter } from "better-auth/adapters/prisma";
import prisma from "../../prisma";
export const auth = betterAuth({
database: prismaAdapter(prisma, {
provider: "{{database}}"
{{#if (eq database "postgres")}}provider: "postgresql"{{/if}}
{{#if (eq database "sqlite")}}provider: "sqlite"{{/if}}
{{#if (eq database "mysql")}}provider: "mysql"{{/if}}
}),
trustedOrigins: [process.env.CORS_ORIGIN || ""],
emailAndPassword: { enabled: true }
});
{{/if}}
{{else if (eq orm "drizzle")}}
{{#if (eq orm "drizzle")}}
import { betterAuth } from "better-auth";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { db } from "../db";
import * as schema from "../db/schema/auth";
export const auth = betterAuth({
database: drizzleAdapter(db, {
{{#if (eq database "postgresql")}}provider: "pg",{{/if}}
{{#if (eq database "postgres")}}provider: "pg",{{/if}}
{{#if (eq database "sqlite")}}provider: "sqlite",{{/if}}
{{#if (eq database "mysql")}}provider: "mysql",{{/if}}
schema: schema
@@ -27,4 +30,14 @@ export const auth = betterAuth({
trustedOrigins: [process.env.CORS_ORIGIN || ""],
emailAndPassword: { enabled: true }
});
{{/if}}
{{/if}}
{{#if (eq orm "none")}}
import { betterAuth } from "better-auth";
export const auth = betterAuth({
database: "",
trustedOrigins: [process.env.CORS_ORIGIN || ""],
emailAndPassword: { enabled: true }
});
{{/if}}