Skip to content

Commit 3c9811b

Browse files
fix(cli): improve Alchemy deployment and D1 scripts
1 parent bd1b2f4 commit 3c9811b

File tree

2 files changed

+81
-30
lines changed

2 files changed

+81
-30
lines changed

apps/cli/src/helpers/core/post-installation.ts

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,12 @@ export async function displayPostInstallInstructions(
2929
} = config;
3030

3131
const isConvex = backend === "convex";
32-
const runCmd = packageManager === "npm" ? "npm run" : packageManager;
32+
const runCmd =
33+
packageManager === "npm"
34+
? "npm run"
35+
: packageManager === "pnpm"
36+
? "pnpm run"
37+
: "bun run";
3338
const cdCmd = `cd ${relativePath}`;
3439
const hasHuskyOrBiome =
3540
addons?.includes("husky") || addons?.includes("biome");
@@ -253,7 +258,7 @@ async function getDatabaseInstructions(
253258
);
254259
instructions.push(
255260
`${pc.cyan("4.")} Generate migrations: ${pc.white(
256-
`cd apps/server && ${packageManager} db:generate`,
261+
`cd apps/server && ${runCmd} db:generate`,
257262
)}`,
258263
);
259264
instructions.push(
@@ -269,6 +274,11 @@ async function getDatabaseInstructions(
269274
}
270275

271276
if (dbSetup === "d1" && serverDeploy === "alchemy") {
277+
instructions.push(
278+
`${pc.yellow(
279+
"NOTE:",
280+
)} D1 migrations are automatically handled by Alchemy`,
281+
);
272282
}
273283

274284
if (orm === "prisma") {
@@ -293,7 +303,11 @@ async function getDatabaseInstructions(
293303
);
294304
}
295305
instructions.push(`${pc.cyan("•")} Apply schema: ${`${runCmd} db:push`}`);
296-
instructions.push(`${pc.cyan("•")} Database UI: ${`${runCmd} db:studio`}`);
306+
if (!(dbSetup === "d1" && serverDeploy === "alchemy")) {
307+
instructions.push(
308+
`${pc.cyan("•")} Database UI: ${`${runCmd} db:studio`}`,
309+
);
310+
}
297311
} else if (orm === "drizzle") {
298312
if (dbSetup === "docker") {
299313
instructions.push(
@@ -303,7 +317,11 @@ async function getDatabaseInstructions(
303317
if (dbSetup !== "d1") {
304318
instructions.push(`${pc.cyan("•")} Apply schema: ${`${runCmd} db:push`}`);
305319
}
306-
instructions.push(`${pc.cyan("•")} Database UI: ${`${runCmd} db:studio`}`);
320+
if (!(dbSetup === "d1" && serverDeploy === "alchemy")) {
321+
instructions.push(
322+
`${pc.cyan("•")} Database UI: ${`${runCmd} db:studio`}`,
323+
);
324+
}
307325
if (database === "sqlite" && dbSetup !== "d1") {
308326
instructions.push(
309327
`${pc.cyan(
@@ -394,15 +412,15 @@ function getAlchemyDeployInstructions(
394412

395413
if (webDeploy === "alchemy" && serverDeploy !== "alchemy") {
396414
instructions.push(
397-
`${pc.bold("Deploy web to Alchemy:")}\n${pc.cyan("•")} Deploy: ${`cd apps/web && ${runCmd} deploy`}`,
415+
`${pc.bold("Deploy web with Alchemy:")}\n${pc.cyan("•")} Dev: ${`cd apps/web && ${runCmd} alchemy:dev`}\n${pc.cyan("•")} Deploy: ${`cd apps/web && ${runCmd} deploy`}\n${pc.cyan("•")} Destroy: ${`cd apps/web && ${runCmd} destroy`}`,
398416
);
399417
} else if (serverDeploy === "alchemy" && webDeploy !== "alchemy") {
400418
instructions.push(
401-
`${pc.bold("Deploy server to Alchemy:")}\n${pc.cyan("•")} Deploy: ${`cd apps/server && ${runCmd} deploy`}`,
419+
`${pc.bold("Deploy server with Alchemy:")}\n${pc.cyan("•")} Dev: ${`cd apps/server && ${runCmd} alchemy:dev`}\n${pc.cyan("•")} Deploy: ${`cd apps/server && ${runCmd} deploy`}\n${pc.cyan("•")} Destroy: ${`cd apps/server && ${runCmd} destroy`}`,
402420
);
403421
} else if (webDeploy === "alchemy" && serverDeploy === "alchemy") {
404422
instructions.push(
405-
`${pc.bold("Deploy to Alchemy:")}\n${pc.cyan("•")} Deploy: ${`${runCmd} deploy`}`,
423+
`${pc.bold("Deploy with Alchemy:")}\n${pc.cyan("•")} Dev: ${`${runCmd} alchemy:dev`}\n${pc.cyan("•")} Deploy: ${`${runCmd} deploy`}\n${pc.cyan("•")} Destroy: ${`${runCmd} destroy`}`,
406424
);
407425
}
408426

apps/cli/src/helpers/core/project-config.ts

Lines changed: 56 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,19 @@ async function updateRootPackageJson(
7171
}
7272
if (needsDbScripts) {
7373
scripts["db:push"] = `turbo -F ${backendPackageName} db:push`;
74-
scripts["db:studio"] = `turbo -F ${backendPackageName} db:studio`;
74+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
75+
scripts["db:studio"] = `turbo -F ${backendPackageName} db:studio`;
76+
}
7577
if (options.orm === "prisma") {
7678
scripts["db:generate"] = `turbo -F ${backendPackageName} db:generate`;
77-
scripts["db:migrate"] = `turbo -F ${backendPackageName} db:migrate`;
79+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
80+
scripts["db:migrate"] = `turbo -F ${backendPackageName} db:migrate`;
81+
}
7882
} else if (options.orm === "drizzle") {
7983
scripts["db:generate"] = `turbo -F ${backendPackageName} db:generate`;
80-
scripts["db:migrate"] = `turbo -F ${backendPackageName} db:migrate`;
84+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
85+
scripts["db:migrate"] = `turbo -F ${backendPackageName} db:migrate`;
86+
}
8187
}
8288
}
8389
if (options.dbSetup === "docker") {
@@ -98,17 +104,23 @@ async function updateRootPackageJson(
98104
}
99105
if (needsDbScripts) {
100106
scripts["db:push"] = `pnpm --filter ${backendPackageName} db:push`;
101-
scripts["db:studio"] = `pnpm --filter ${backendPackageName} db:studio`;
107+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
108+
scripts["db:studio"] = `pnpm --filter ${backendPackageName} db:studio`;
109+
}
102110
if (options.orm === "prisma") {
103111
scripts["db:generate"] =
104112
`pnpm --filter ${backendPackageName} db:generate`;
105-
scripts["db:migrate"] =
106-
`pnpm --filter ${backendPackageName} db:migrate`;
113+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
114+
scripts["db:migrate"] =
115+
`pnpm --filter ${backendPackageName} db:migrate`;
116+
}
107117
} else if (options.orm === "drizzle") {
108118
scripts["db:generate"] =
109119
`pnpm --filter ${backendPackageName} db:generate`;
110-
scripts["db:migrate"] =
111-
`pnpm --filter ${backendPackageName} db:migrate`;
120+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
121+
scripts["db:migrate"] =
122+
`pnpm --filter ${backendPackageName} db:migrate`;
123+
}
112124
}
113125
}
114126
if (options.dbSetup === "docker") {
@@ -130,18 +142,24 @@ async function updateRootPackageJson(
130142
}
131143
if (needsDbScripts) {
132144
scripts["db:push"] = `npm run db:push --workspace ${backendPackageName}`;
133-
scripts["db:studio"] =
134-
`npm run db:studio --workspace ${backendPackageName}`;
145+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
146+
scripts["db:studio"] =
147+
`npm run db:studio --workspace ${backendPackageName}`;
148+
}
135149
if (options.orm === "prisma") {
136150
scripts["db:generate"] =
137151
`npm run db:generate --workspace ${backendPackageName}`;
138-
scripts["db:migrate"] =
139-
`npm run db:migrate --workspace ${backendPackageName}`;
152+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
153+
scripts["db:migrate"] =
154+
`npm run db:migrate --workspace ${backendPackageName}`;
155+
}
140156
} else if (options.orm === "drizzle") {
141157
scripts["db:generate"] =
142158
`npm run db:generate --workspace ${backendPackageName}`;
143-
scripts["db:migrate"] =
144-
`npm run db:migrate --workspace ${backendPackageName}`;
159+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
160+
scripts["db:migrate"] =
161+
`npm run db:migrate --workspace ${backendPackageName}`;
162+
}
145163
}
146164
}
147165
if (options.dbSetup === "docker") {
@@ -164,17 +182,24 @@ async function updateRootPackageJson(
164182
}
165183
if (needsDbScripts) {
166184
scripts["db:push"] = `bun run --filter ${backendPackageName} db:push`;
167-
scripts["db:studio"] = `bun run --filter ${backendPackageName} db:studio`;
185+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
186+
scripts["db:studio"] =
187+
`bun run --filter ${backendPackageName} db:studio`;
188+
}
168189
if (options.orm === "prisma") {
169190
scripts["db:generate"] =
170191
`bun run --filter ${backendPackageName} db:generate`;
171-
scripts["db:migrate"] =
172-
`bun run --filter ${backendPackageName} db:migrate`;
192+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
193+
scripts["db:migrate"] =
194+
`bun run --filter ${backendPackageName} db:migrate`;
195+
}
173196
} else if (options.orm === "drizzle") {
174197
scripts["db:generate"] =
175198
`bun run --filter ${backendPackageName} db:generate`;
176-
scripts["db:migrate"] =
177-
`bun run --filter ${backendPackageName} db:migrate`;
199+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
200+
scripts["db:migrate"] =
201+
`bun run --filter ${backendPackageName} db:migrate`;
202+
}
178203
}
179204
}
180205
if (options.dbSetup === "docker") {
@@ -249,14 +274,22 @@ async function updateServerPackageJson(
249274

250275
if (options.orm === "prisma") {
251276
scripts["db:push"] = "prisma db push";
252-
scripts["db:studio"] = "prisma studio";
277+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
278+
scripts["db:studio"] = "prisma studio";
279+
}
253280
scripts["db:generate"] = "prisma generate";
254-
scripts["db:migrate"] = "prisma migrate dev";
281+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
282+
scripts["db:migrate"] = "prisma migrate dev";
283+
}
255284
} else if (options.orm === "drizzle") {
256285
scripts["db:push"] = "drizzle-kit push";
257-
scripts["db:studio"] = "drizzle-kit studio";
286+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
287+
scripts["db:studio"] = "drizzle-kit studio";
288+
}
258289
scripts["db:generate"] = "drizzle-kit generate";
259-
scripts["db:migrate"] = "drizzle-kit migrate";
290+
if (!(options.dbSetup === "d1" && options.serverDeploy === "alchemy")) {
291+
scripts["db:migrate"] = "drizzle-kit migrate";
292+
}
260293
}
261294
}
262295

0 commit comments

Comments
 (0)