-
Notifications
You must be signed in to change notification settings - Fork 0
/
rsbuild.config.ts
105 lines (103 loc) · 2.32 KB
/
rsbuild.config.ts
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import { defineConfig, loadEnv } from "@rsbuild/core";
import * as voby from "voby-unplugin";
import path from "node:path";
export default defineConfig({
dev: {
writeToDisk: true,
},
server: {
publicDir: {
name: "public",
copyOnBuild: true,
},
printUrls: true,
},
environments: {
web: {
source: {
entry: {
index: "./client/src/index.tsx",
},
},
output: {
inlineStyles: true,
inlineScripts: true,
distPath: {
root: "dist",
},
cleanDistPath: true,
target: "web",
},
html: {
template: "./client/public/index.html",
inject: "body",
scriptLoading: "blocking",
},
tools: {
swc: {
jsc: {
transform: {
react: {
runtime: "automatic",
importSource: "voby",
},
},
},
},
rspack(config, ctx) {
config.experiments ??= {};
config.experiments.outputModule = true;
ctx.env === "development" && ctx.prependPlugins(voby.hmr.rspack());
},
},
},
ssr: {
output: {
target: "node",
distPath: {
root: "dist/server",
},
filename: {
js: "[name].mjs",
},
},
source: {
define: {
...loadEnv({
mode: process.env.NODE_ENV,
cwd: path.join(process.cwd(), "..", ".."),
}).publicVars,
},
entry: {
index: "./server/src/index.tsx",
},
},
tools: {
swc: {
jsc: {
transform: {
react: {
runtime: "automatic",
importSource: "voby",
},
},
},
},
rspack(config, ctx) {
config.experiments ??= {};
config.experiments.outputModule = true;
config.output ??= {};
config.output.module = true;
config.output.chunkFormat = "module";
config.output.library = {
type:
process.env.NODE_ENV === "production"
? "modern-module"
: "module",
};
ctx.prependPlugins(voby.ssr.rspack());
},
},
},
},
});