Skip to content

Commit d641510

Browse files
committed
Apply feedback
1 parent cdfbbbe commit d641510

File tree

3 files changed

+24
-29
lines changed

3 files changed

+24
-29
lines changed

packages/zudoku/src/config/loader.ts

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { stat } from "node:fs/promises";
22
import path from "node:path";
33
import colors from "picocolors";
44
import {
5-
type build,
65
type ConfigEnv,
76
runnerImport,
87
loadEnv as viteLoadEnv,
@@ -106,23 +105,6 @@ async function loadZudokuConfigWithMeta(
106105
return configWithMetadata;
107106
}
108107

109-
type BuildResult = Awaited<ReturnType<typeof build>>;
110-
111-
export function findOutputPathOfServerConfig(output: BuildResult) {
112-
if (Array.isArray(output)) {
113-
throw new Error("Expected a single output, but got an array");
114-
}
115-
if ("output" in output) {
116-
const result = output.output.find(
117-
(o) => "isEntry" in o && o.isEntry && o.fileName === "zudoku.config.js",
118-
);
119-
if (result) {
120-
return result.fileName;
121-
}
122-
}
123-
throw new Error("Could not find server config output file");
124-
}
125-
126108
function loadEnv(configEnv: ConfigEnv, rootDir: string) {
127109
const envPrefix = ["ZUPLO_PUBLIC_", "ZUDOKU_PUBLIC_"];
128110
const localEnv = viteLoadEnv(configEnv.mode, rootDir, envPrefix);

packages/zudoku/src/vite/build.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
22
import path from "node:path";
33
import { build as esbuild } from "esbuild";
4-
import { createBuilder } from "vite";
4+
import { createBuilder, type Rolldown } from "vite";
55
import { ZuploEnv } from "../app/env.js";
66
import { getZudokuRootDir } from "../cli/common/package-json.js";
7-
import {
8-
findOutputPathOfServerConfig,
9-
loadZudokuConfig,
10-
} from "../config/loader.js";
7+
import { type ConfigWithMeta, loadZudokuConfig } from "../config/loader.js";
118
import { getIssuer } from "../lib/auth/issuer.js";
129
import invariant from "../lib/util/invariant.js";
1310
import { joinUrl } from "../lib/util/joinUrl.js";
@@ -37,6 +34,9 @@ export async function runBuild(options: BuildOptions) {
3734
invariant(builder.environments.client, "Client environment is missing");
3835
invariant(builder.environments.ssr, "SSR environment is missing");
3936

37+
const distDir = path.resolve(path.join(dir, "dist"));
38+
await rm(distDir, { recursive: true, force: true });
39+
4040
const [clientResult, serverResult] = await Promise.all([
4141
builder.build(builder.environments.client),
4242
builder.build(builder.environments.ssr),
@@ -46,7 +46,11 @@ export async function runBuild(options: BuildOptions) {
4646
clientResult && !Array.isArray(clientResult) && "output" in clientResult,
4747
"Client build failed to produce valid output",
4848
);
49-
invariant(serverResult, "SSR build failed to produce valid output");
49+
50+
invariant(
51+
serverResult && !Array.isArray(serverResult) && "output" in serverResult,
52+
"SSR build failed to produce valid output",
53+
);
5054

5155
const { config } = await loadZudokuConfig(
5256
{ mode: "production", command: "build" },
@@ -102,18 +106,27 @@ export async function runBuild(options: BuildOptions) {
102106

103107
type PrerenderOptions = {
104108
dir: string;
105-
config: Awaited<ReturnType<typeof loadZudokuConfig>>["config"];
109+
config: ConfigWithMeta;
106110
html: string;
107111
clientOutDir: string;
108112
serverOutDir: string;
109-
serverResult: Awaited<ReturnType<typeof import("vite").build>>;
113+
serverResult: Rolldown.RolldownOutput;
114+
};
115+
116+
const findServerConfigFilename = (result: Rolldown.RolldownOutput) => {
117+
const entry = result.output.find(
118+
(o) => o.type === "chunk" && o.isEntry && o.fileName === "zudoku.config.js",
119+
);
120+
invariant(entry, "Could not find zudoku.config entry in server build output");
121+
122+
return entry.fileName;
110123
};
111124

112125
const runPrerender = async (options: PrerenderOptions) => {
113126
const { dir, config, html, clientOutDir, serverOutDir, serverResult } =
114127
options;
115128
const issuer = await getIssuer(config);
116-
const serverConfigFilename = findOutputPathOfServerConfig(serverResult);
129+
const serverConfigFilename = findServerConfigFilename(serverResult);
117130

118131
try {
119132
const { workerResults, rewrites } = await prerender({

packages/zudoku/src/vite/config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ export async function getViteConfig(
142142
client: {
143143
build: {
144144
outDir: path.resolve(path.join(dir, "dist", config.basePath ?? "")),
145-
emptyOutDir: true,
145+
emptyOutDir: false,
146146
rolldownOptions: {
147147
input:
148148
configEnv.command === "build"
@@ -157,7 +157,7 @@ export async function getViteConfig(
157157
outDir: path.resolve(
158158
path.join(dir, "dist", config.basePath ?? "", "server"),
159159
),
160-
emptyOutDir: true,
160+
emptyOutDir: false,
161161
rolldownOptions: {
162162
logLevel: "warn",
163163
checks: {

0 commit comments

Comments
 (0)