-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathreact-router.config.ts
More file actions
68 lines (57 loc) · 2.04 KB
/
react-router.config.ts
File metadata and controls
68 lines (57 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import { readFileSync, rmSync, writeFileSync } from "node:fs";
import path from "node:path";
import type { Config } from "@react-router/dev/config";
import colors from "picocolors";
import { version } from "vite";
export default {
appDirectory: "src",
ssr: false,
buildEnd({ reactRouterConfig, viteConfig }) {
const startTime = performance.now();
const logger = viteConfig.logger;
const clientBuildDirectory = path.join(
reactRouterConfig.buildDirectory,
"client",
);
const indexFile = "index.html";
const headerFile = "header.html";
const footerFile = "footer.html";
const prettyDir = path.relative(viteConfig.root, clientBuildDirectory);
logger.info(
colors.cyan(
`vite v${version} ${colors.green(
`building nginx environment for ${viteConfig.mode}...`,
)}`,
),
);
logger.info(
`${colors.green("✓")} 2 assets generated for nginx environment.`,
);
logger.info(colors.dim(path.join(prettyDir, headerFile)));
const content = readFileSync(
path.join(clientBuildDirectory, indexFile),
"utf-8",
);
let [headerContent, ...footerParts] = content.split(
'<template id="nginx-index"',
);
headerContent = `${headerContent}<template id="nginx-index"><h1>`;
writeFileSync(path.join(clientBuildDirectory, headerFile), headerContent);
logger.info(colors.dim(path.join(prettyDir, footerFile)));
[, ...footerParts] = footerParts
.join('<template id="nginx-index"')
.split("</template>");
const footerContent = `</template>${footerParts.join("</template>")}`;
writeFileSync(path.join(clientBuildDirectory, footerFile), footerContent);
logger.info(
`\nRemoving ${indexFile} from ${colors.green(clientBuildDirectory)} due to nginx environment`,
);
rmSync(path.join(clientBuildDirectory, indexFile));
const endTime = performance.now();
logger.info(
colors.green(
`✓ built in ${Math.round((endTime - startTime) / 10) / 100}s`,
),
);
},
} satisfies Config;