Skip to content

Commit ef3b045

Browse files
committed
Generator: more node fs
1 parent c192c6a commit ef3b045

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

src/generator.ts

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ interface GenerateConfig {
2828
export const generate = async (config?: GenerateConfig): Promise<void> => {
2929
const fs = await import("node:fs/promises");
3030
const { dirname, toFileUrl } = await import("@std/path");
31-
const { tsToJs } = await import("./server.ts");
3231

3332
const { outFolder = "generated", pregenerateOnly = false } = config || {};
3433
const pregenerateAll = !pregenerateOnly;
@@ -42,10 +41,17 @@ export const generate = async (config?: GenerateConfig): Promise<void> => {
4241
for (const file of await generatePagesForRoute(route, module)) {
4342
if (file) {
4443
const outFilePath = outFolder + file.outFilePath;
45-
await Deno.mkdir(dirname(outFilePath), { recursive: true });
44+
await fs.mkdir(dirname(outFilePath), { recursive: true });
4645
const { body } = file.response;
4746
if (body) {
48-
Deno.writeFile(outFilePath, body);
47+
if (typeof Deno === "object") {
48+
Deno.writeFile(outFilePath, body);
49+
} else {
50+
const { createWriteStream } = await import("node:fs");
51+
const { Readable } = await import('node:stream');
52+
// deno-lint-ignore no-explicit-any
53+
Readable.fromWeb(body as any).pipe(createWriteStream(outFilePath));
54+
}
4955
}
5056
}
5157
}
@@ -57,25 +63,33 @@ export const generate = async (config?: GenerateConfig): Promise<void> => {
5763

5864
for (const filePath of await getStaticFilePaths()) {
5965
if (filePath.endsWith(".client.ts")) {
60-
const text = await Deno.readTextFile("routes" + filePath);
61-
Deno.writeTextFile(outFolder + filePath.slice(0, -3) + ".js", await tsToJs(text));
66+
const { tsToJs } = await import("./server.ts");
67+
const text = await fs.readFile("routes" + filePath, { encoding: "utf8" });
68+
fs.writeFile(outFolder + filePath.slice(0, -3) + ".js", await tsToJs(text));
6269
} else if (pregenerateAll) {
6370
const outPath = outFolder + filePath;
64-
await Deno.mkdir(dirname(outPath), { recursive: true });
65-
await Deno.copyFile("routes" + filePath, outPath);
71+
await fs.mkdir(dirname(outPath), { recursive: true });
72+
await fs.copyFile("routes" + filePath, outPath);
6673
}
6774
}
6875

6976
console.info(`Generated static site and wrote to ${outFolder}/ folder.`);
7077
};
7178

7279
if (typeof document === "undefined" && import.meta.main) {
73-
const { parseArgs } = await import("@std/cli/parse-args");
74-
const flags = parseArgs(Deno.args, {
75-
boolean: ["pregenerateOnly"],
76-
string: ["outFolder"],
80+
const { parseArgs } = await import("node:util");
81+
const flags = parseArgs({
82+
args: process.argv.slice(2),
83+
options: {
84+
outFolder: {
85+
type: "string",
86+
},
87+
pregenerateOnly: {
88+
type: "boolean",
89+
},
90+
}
7791
});
78-
generate(flags);
92+
generate(flags.values);
7993
}
8094

8195
/**

0 commit comments

Comments
 (0)