feat(cli): prisma + workers, prisma + turso, planetscale (postgres/mysql) support (#567)

This commit is contained in:
Aman Varshney
2025-09-08 12:15:26 +05:30
committed by GitHub
parent 33344d91be
commit cd5d0f0aeb
66 changed files with 1486 additions and 729 deletions

View File

@@ -12,7 +12,8 @@ export async function setupNextAlchemyDeploy(
if (!(await fs.pathExists(webAppDir))) return;
await addPackageDependency({
devDependencies: ["alchemy", "dotenv"],
dependencies: ["@opennextjs/cloudflare"],
devDependencies: ["alchemy", "dotenv", "wrangler"],
projectDir: webAppDir,
});
@@ -29,4 +30,22 @@ export async function setupNextAlchemyDeploy(
}
await fs.writeJson(pkgPath, pkg, { spaces: 2 });
}
const openNextConfigPath = path.join(webAppDir, "open-next.config.ts");
const openNextConfigContent = `import { defineCloudflareConfig } from "@opennextjs/cloudflare";
export default defineCloudflareConfig({});
`;
await fs.writeFile(openNextConfigPath, openNextConfigContent);
const gitignorePath = path.join(webAppDir, ".gitignore");
if (await fs.pathExists(gitignorePath)) {
const gitignoreContent = await fs.readFile(gitignorePath, "utf-8");
if (!gitignoreContent.includes("wrangler.jsonc")) {
await fs.appendFile(gitignorePath, "\nwrangler.jsonc\n");
}
} else {
await fs.writeFile(gitignorePath, "wrangler.jsonc\n");
}
}

View File

@@ -5,6 +5,7 @@ import fs from "fs-extra";
import pc from "picocolors";
import type { PackageManager, ProjectConfig } from "../../types";
import { addPackageDependency } from "../../utils/add-package-deps";
import { getPackageExecutionCommand } from "../../utils/package-runner";
export async function setupServerDeploy(config: ProjectConfig) {
const { serverDeploy, webDeploy, projectDir } = config;
@@ -64,8 +65,11 @@ async function generateCloudflareWorkerTypes({
const s = spinner();
try {
s.start("Generating Cloudflare Workers types...");
const runCmd = packageManager === "npm" ? "npm" : packageManager;
await execa(runCmd, ["run", "cf-typegen"], { cwd: serverDir });
const runCmd = getPackageExecutionCommand(
packageManager,
"wrangler types --env-interface CloudflareBindings",
);
await execa(runCmd, { cwd: serverDir, shell: true });
s.stop("Cloudflare Workers types generated successfully!");
} catch {
s.stop(pc.yellow("Failed to generate Cloudflare Workers types"));