@modern-js/main-doc 2.58.2 → 2.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/en/apis/app/runtime/core/use-loader.mdx +1 -1
- package/docs/en/community/blog/_meta.json +1 -6
- package/docs/en/components/deploy.mdx +1 -1
- package/docs/en/components/init-app.mdx +0 -1
- package/docs/en/components/init-rspack-app.mdx +0 -1
- package/docs/en/components/ssr-monitor.mdx +3 -0
- package/docs/en/configure/_meta.json +1 -1
- package/docs/en/configure/app/output/ssg.mdx +52 -141
- package/docs/en/configure/app/tools/swc.mdx +1 -1
- package/docs/en/configure/app/tools/tailwindcss.mdx +1 -1
- package/docs/en/guides/advanced-features/_meta.json +0 -8
- package/docs/en/guides/advanced-features/bff/_meta.json +1 -6
- package/docs/en/guides/advanced-features/rsbuild-plugin.mdx +2 -2
- package/docs/en/guides/advanced-features/rspack-start.mdx +7 -22
- package/docs/en/guides/basic-features/_meta.json +31 -9
- package/docs/en/guides/basic-features/css/_meta.json +1 -0
- package/docs/en/guides/basic-features/css/css-in-js.mdx +34 -0
- package/docs/en/guides/basic-features/{css-modules.mdx → css/css-modules.mdx} +0 -4
- package/docs/en/guides/basic-features/css/css.mdx +25 -0
- package/docs/en/guides/basic-features/{css.mdx → css/tailwindcss.mdx} +5 -66
- package/docs/en/guides/basic-features/data/_meta.json +1 -4
- package/docs/en/guides/basic-features/data/data-fetch.mdx +134 -235
- package/docs/en/guides/basic-features/data/data-write.mdx +66 -77
- package/docs/en/guides/basic-features/debug/_meta.json +1 -0
- package/docs/en/guides/basic-features/debug/rsdoctor.mdx +57 -0
- package/docs/en/guides/{advanced-features → basic-features/debug}/using-storybook.mdx +2 -0
- package/docs/en/guides/basic-features/render/_meta.json +1 -0
- package/docs/en/guides/basic-features/render/ssg.mdx +208 -0
- package/docs/en/guides/{advanced-features/ssr/cache.mdx → basic-features/render/ssr-cache.mdx} +38 -50
- package/docs/en/guides/basic-features/render/ssr.mdx +301 -0
- package/docs/en/guides/basic-features/render/streaming-ssr.mdx +230 -0
- package/docs/en/guides/basic-features/routes.mdx +275 -263
- package/docs/en/guides/basic-features/static-assets/_meta.json +1 -0
- package/docs/en/guides/basic-features/static-assets.mdx +1 -1
- package/docs/en/guides/basic-features/testing/_meta.json +1 -0
- package/docs/en/guides/basic-features/testing/cypress.mdx +95 -0
- package/docs/en/guides/basic-features/testing/jest.mdx +148 -0
- package/docs/en/guides/basic-features/testing/playwright.mdx +111 -0
- package/docs/en/guides/basic-features/testing/vitest.mdx +100 -0
- package/docs/en/guides/concept/_meta.json +1 -4
- package/docs/en/guides/concept/entries.mdx +78 -47
- package/docs/en/guides/get-started/_meta.json +1 -7
- package/docs/en/guides/get-started/introduction.mdx +1 -1
- package/docs/en/guides/get-started/quick-start.mdx +1 -2
- package/docs/en/guides/get-started/tech-stack.mdx +4 -6
- package/docs/en/guides/get-started/upgrade.mdx +16 -2
- package/docs/en/guides/topic-detail/framework-plugin/_meta.json +1 -1
- package/docs/en/guides/topic-detail/generator/_meta.json +1 -1
- package/docs/en/guides/topic-detail/generator/create/_meta.json +1 -5
- package/docs/en/guides/topic-detail/generator/create/config.mdx +0 -10
- package/docs/en/guides/topic-detail/generator/create/use.mdx +0 -1
- package/docs/en/guides/topic-detail/generator/new/_meta.json +1 -5
- package/docs/en/guides/topic-detail/generator/plugin/_meta.json +1 -1
- package/docs/en/guides/troubleshooting/_meta.json +1 -6
- package/docs/en/tutorials/first-app/c03-css.mdx +1 -1
- package/docs/zh/apis/app/runtime/core/use-loader.mdx +1 -1
- package/docs/zh/community/blog/_meta.json +1 -6
- package/docs/zh/components/deploy.mdx +1 -1
- package/docs/zh/components/init-app.mdx +0 -1
- package/docs/zh/components/init-rspack-app.mdx +0 -1
- package/docs/zh/components/ssr-monitor.mdx +3 -0
- package/docs/zh/configure/_meta.json +1 -1
- package/docs/zh/configure/app/output/ssg.mdx +49 -139
- package/docs/zh/configure/app/tools/swc.mdx +1 -1
- package/docs/zh/configure/app/tools/tailwindcss.mdx +1 -1
- package/docs/zh/guides/advanced-features/_meta.json +0 -8
- package/docs/zh/guides/advanced-features/bff/_meta.json +1 -6
- package/docs/zh/guides/advanced-features/rsbuild-plugin.mdx +2 -2
- package/docs/zh/guides/advanced-features/rspack-start.mdx +8 -24
- package/docs/zh/guides/basic-features/_meta.json +31 -9
- package/docs/zh/guides/basic-features/css/_meta.json +1 -0
- package/docs/zh/guides/basic-features/css/css-in-js.mdx +34 -0
- package/docs/zh/guides/basic-features/css/css.mdx +25 -0
- package/docs/zh/guides/basic-features/{css.mdx → css/tailwindcss.mdx} +3 -64
- package/docs/zh/guides/basic-features/data/_meta.json +1 -4
- package/docs/zh/guides/basic-features/data/data-fetch.mdx +98 -214
- package/docs/zh/guides/basic-features/data/data-write.mdx +54 -55
- package/docs/zh/guides/basic-features/debug/_meta.json +1 -0
- package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +57 -0
- package/docs/zh/guides/{advanced-features → basic-features/debug}/using-storybook.mdx +1 -1
- package/docs/zh/guides/basic-features/render/_meta.json +1 -0
- package/docs/zh/guides/basic-features/render/ssg.mdx +210 -0
- package/docs/zh/guides/{advanced-features/ssr/cache.mdx → basic-features/render/ssr-cache.mdx} +16 -26
- package/docs/zh/guides/basic-features/render/ssr.mdx +309 -0
- package/docs/zh/guides/{advanced-features/ssr/stream.mdx → basic-features/render/streaming-ssr.mdx} +22 -37
- package/docs/zh/guides/basic-features/routes.mdx +252 -237
- package/docs/zh/guides/basic-features/static-assets/_meta.json +1 -0
- package/docs/zh/guides/basic-features/static-assets.mdx +2 -6
- package/docs/zh/guides/basic-features/testing/_meta.json +1 -0
- package/docs/zh/guides/basic-features/testing/cypress.mdx +95 -0
- package/docs/zh/guides/basic-features/testing/jest.mdx +148 -0
- package/docs/zh/guides/basic-features/testing/playwright.mdx +112 -0
- package/docs/zh/guides/basic-features/testing/vitest.mdx +100 -0
- package/docs/zh/guides/concept/_meta.json +1 -4
- package/docs/zh/guides/concept/entries.mdx +80 -58
- package/docs/zh/guides/get-started/_meta.json +1 -7
- package/docs/zh/guides/get-started/introduction.mdx +2 -2
- package/docs/zh/guides/get-started/quick-start.mdx +1 -2
- package/docs/zh/guides/get-started/tech-stack.mdx +8 -10
- package/docs/zh/guides/get-started/upgrade.mdx +15 -1
- package/docs/zh/guides/topic-detail/framework-plugin/_meta.json +1 -1
- package/docs/zh/guides/topic-detail/generator/_meta.json +1 -1
- package/docs/zh/guides/topic-detail/generator/create/_meta.json +1 -5
- package/docs/zh/guides/topic-detail/generator/create/config.mdx +0 -10
- package/docs/zh/guides/topic-detail/generator/create/use.mdx +0 -1
- package/docs/zh/guides/topic-detail/generator/new/_meta.json +1 -5
- package/docs/zh/guides/topic-detail/generator/plugin/_meta.json +1 -1
- package/docs/zh/guides/troubleshooting/_meta.json +1 -6
- package/docs/zh/tutorials/first-app/c03-css.mdx +1 -1
- package/i18n.json +16 -4
- package/package.json +6 -6
- package/rspress.config.ts +1 -1
- package/src/components/ContentCard/index.tsx +1 -1
- package/src/components/Sandpack/index.tsx +1 -1
- package/src/components/ShowcaseList/index.tsx +1 -1
- package/src/i18n/index.ts +1 -1
- package/src/pages/index.tsx +2 -2
- package/docs/en/apis/app/hooks/config/storybook.mdx +0 -37
- package/docs/en/guides/advanced-features/ssg.mdx +0 -116
- package/docs/en/guides/advanced-features/ssr/_meta.json +0 -5
- package/docs/en/guides/advanced-features/ssr/index.mdx +0 -23
- package/docs/en/guides/advanced-features/ssr/stream.mdx +0 -248
- package/docs/en/guides/advanced-features/ssr/usage.mdx +0 -341
- package/docs/en/guides/advanced-features/ssr.mdx +0 -555
- package/docs/zh/apis/app/hooks/config/storybook.mdx +0 -38
- package/docs/zh/guides/advanced-features/ssg.mdx +0 -116
- package/docs/zh/guides/advanced-features/ssr/_meta.json +0 -5
- package/docs/zh/guides/advanced-features/ssr/index.mdx +0 -23
- package/docs/zh/guides/advanced-features/ssr/usage.mdx +0 -329
- /package/docs/en/guides/basic-features/{mock.mdx → debug/mock.mdx} +0 -0
- /package/docs/en/guides/basic-features/{proxy.mdx → debug/proxy.mdx} +0 -0
- /package/docs/en/guides/basic-features/{json-files.mdx → static-assets/json-files.mdx} +0 -0
- /package/docs/en/guides/basic-features/{svg-assets.mdx → static-assets/svg-assets.mdx} +0 -0
- /package/docs/en/guides/basic-features/{wasm-assets.mdx → static-assets/wasm-assets.mdx} +0 -0
- /package/docs/zh/guides/basic-features/{css-modules.mdx → css/css-modules.mdx} +0 -0
- /package/docs/zh/guides/basic-features/{mock.mdx → debug/mock.mdx} +0 -0
- /package/docs/zh/guides/basic-features/{proxy.mdx → debug/proxy.mdx} +0 -0
- /package/docs/zh/guides/basic-features/{json-files.mdx → static-assets/json-files.mdx} +0 -0
- /package/docs/zh/guides/basic-features/{svg-assets.mdx → static-assets/svg-assets.mdx} +0 -0
- /package/docs/zh/guides/basic-features/{wasm-assets.mdx → static-assets/wasm-assets.mdx} +0 -0
|
@@ -4,44 +4,22 @@ title: ssg
|
|
|
4
4
|
|
|
5
5
|
# output.ssg
|
|
6
6
|
|
|
7
|
-
- **类型:** `boolean` | `object`
|
|
7
|
+
- **类型:** `boolean` | `object`
|
|
8
8
|
- **默认值:** `undefined`
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
开启应用 SSG 功能的配置
|
|
11
11
|
|
|
12
|
-
:::
|
|
13
|
-
此配置需要在开启 SSG 功能情况下才会生效。请阅读 [静态站点生成](/guides/
|
|
12
|
+
:::tip 开启 SSG 功能
|
|
13
|
+
此配置需要在开启 SSG 功能情况下才会生效。请阅读 [静态站点生成](/guides/basic-features/render/ssg) 文档了解如何开启 SSG 功能及使用场景。
|
|
14
14
|
:::
|
|
15
15
|
|
|
16
|
-
:::info
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
:::info 前置阅读
|
|
17
|
+
SSG 功能使用与路由关联性较大,建议使用前先了解[路由方案](/guides/basic-features/routes)。
|
|
19
18
|
:::
|
|
20
19
|
|
|
21
|
-
##
|
|
22
|
-
|
|
23
|
-
### 单入口
|
|
24
|
-
|
|
25
|
-
当该配置设置为 `true` 时,将会默认开启所有入口的 SSG 功能。
|
|
26
|
-
|
|
27
|
-
对**自控式路由**而言,将会渲染入口的根路由。对**约定式路由**而言,将会渲染入口中每一条路由。
|
|
28
|
-
|
|
29
|
-
例如 `src/` 目录下有以下满足**约定式路由**的文件结构:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
.
|
|
33
|
-
├── src
|
|
34
|
-
│ └── routes
|
|
35
|
-
│ ├── layout.tsx
|
|
36
|
-
│ ├── page.tsx
|
|
37
|
-
│ └── user
|
|
38
|
-
│ ├── layout.tsx
|
|
39
|
-
│ ├── page.tsx
|
|
40
|
-
│ └── profile
|
|
41
|
-
│ └── page.tsx
|
|
42
|
-
```
|
|
20
|
+
## Boolean 类型
|
|
43
21
|
|
|
44
|
-
|
|
22
|
+
当该配置设置为 `true` 时,将会默认开启所有入口的 SSG 功能。对**自控式路由**而言,将会渲染入口的根路由。对**约定式路由**而言,将会渲染入口中每一条路由。
|
|
45
23
|
|
|
46
24
|
```js
|
|
47
25
|
export default defineConfig({
|
|
@@ -51,39 +29,20 @@ export default defineConfig({
|
|
|
51
29
|
});
|
|
52
30
|
```
|
|
53
31
|
|
|
54
|
-
执行 `pnpm build` 构建应用后。`dist/` 目录将会生成三张 HTML 分别对应三条路由(不开启 SSG 时只有一张 HTML),并且所有 HTML 都已经渲染。
|
|
55
|
-
|
|
56
|
-
而例如下面的**自控式路由**:
|
|
57
|
-
|
|
58
|
-
import SelfRouteExample from "@site-docs/components/self-route-example";
|
|
59
|
-
|
|
60
|
-
<SelfRouteExample />
|
|
61
|
-
|
|
62
|
-
同样使用上面的配置,在执行 `pnpm run build` 后,只有入口路由 `/` 会生成渲染后的 HTML。
|
|
63
|
-
|
|
64
|
-
### 多入口
|
|
65
|
-
|
|
66
32
|
`output.ssg` 也可以按照入口配置,配置生效的规则同样由入口路由方式决定。
|
|
67
33
|
|
|
68
|
-
|
|
34
|
+
例如以下目录结构,分别存在约定式路由入口 `entryA` 和自控式路由入口 `entryB`:
|
|
69
35
|
|
|
70
36
|
```bash
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
│
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
│ │ └── user
|
|
78
|
-
│ │ ├── layout.tsx
|
|
79
|
-
│ │ ├── page.tsx
|
|
80
|
-
│ │ └── profile
|
|
81
|
-
│ │ └── page.tsx
|
|
82
|
-
│ └── entryB
|
|
83
|
-
│ └── App.tsx
|
|
37
|
+
.
|
|
38
|
+
└── src
|
|
39
|
+
├── entryA
|
|
40
|
+
│ └── routes
|
|
41
|
+
└── entryB
|
|
42
|
+
└── App.tsx
|
|
84
43
|
```
|
|
85
44
|
|
|
86
|
-
|
|
45
|
+
你可以指定 `entryA` 和 `entryB` 的不同 SSG 配置:
|
|
87
46
|
|
|
88
47
|
```js
|
|
89
48
|
export default defineConfig({
|
|
@@ -96,107 +55,58 @@ export default defineConfig({
|
|
|
96
55
|
});
|
|
97
56
|
```
|
|
98
57
|
|
|
99
|
-
### 配置路由
|
|
100
|
-
|
|
101
|
-
上述内容中提到,**自控式路由**默认只会开启入口路由的 SSG 配置。
|
|
102
|
-
|
|
103
|
-
可以在 `output.ssg` 中设置具体的路由,告知 Modern.js 开启这些客户端路由的 SSG 功能。例如上述 `src/App.tsx` 的文件内容为:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
<SelfRouteExample />
|
|
107
|
-
|
|
108
|
-
在 `modern.config.js` 中这样设置后,`/about` 路由也会开启 SSG 功能:
|
|
109
|
-
|
|
110
|
-
```js
|
|
111
|
-
export default defineConfig({
|
|
112
|
-
output: {
|
|
113
|
-
ssg: {
|
|
114
|
-
routes: ['/', '/about'],
|
|
115
|
-
},
|
|
116
|
-
},
|
|
117
|
-
});
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
Modern.js 将会自动根据入口拼接完整的 URL 并交给 SSG 插件完成渲染。
|
|
121
|
-
|
|
122
|
-
也可以为具体入口或路由配置请求头,例如:
|
|
123
|
-
|
|
124
|
-
```js
|
|
125
|
-
export default defineConfig({
|
|
126
|
-
output: {
|
|
127
|
-
ssg: {
|
|
128
|
-
headers: {},
|
|
129
|
-
routes: [
|
|
130
|
-
'/',
|
|
131
|
-
{
|
|
132
|
-
url: '/about',
|
|
133
|
-
headers: {},
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
|
-
```
|
|
140
|
-
|
|
141
58
|
:::info
|
|
142
|
-
|
|
143
|
-
|
|
59
|
+
更多关于**约定式路由**和**自控式路由**在开启 SSG 后的默认行为,请阅读 [静态站点生成](/guides/basic-features/render/ssg) 。
|
|
144
60
|
:::
|
|
145
61
|
|
|
146
|
-
|
|
62
|
+
## Object 类型
|
|
147
63
|
|
|
148
|
-
|
|
64
|
+
当值类型为 `Object` 时,可以配置如下属性。
|
|
149
65
|
|
|
150
|
-
|
|
66
|
+
### 配置类型
|
|
151
67
|
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
│ └── user
|
|
159
|
-
│ ├── layout.tsx
|
|
160
|
-
│ ├── page.tsx
|
|
161
|
-
│ └── profile
|
|
162
|
-
│ └── page.tsx
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
可以这样设置,禁用某一条客户端路由的默认行为:
|
|
68
|
+
```ts
|
|
69
|
+
type SSGRouteOptions = string | {
|
|
70
|
+
url: string;
|
|
71
|
+
params?: Record<string, any>[];
|
|
72
|
+
headers?: Record<string, any>;
|
|
73
|
+
};
|
|
166
74
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
},
|
|
173
|
-
},
|
|
174
|
-
});
|
|
75
|
+
type SSGOptions = {
|
|
76
|
+
preventDefault?: string[];
|
|
77
|
+
headers?: Record<string, any>;
|
|
78
|
+
routes?: SSGRouteOptions[];
|
|
79
|
+
};
|
|
175
80
|
```
|
|
176
81
|
|
|
177
|
-
###
|
|
82
|
+
### 示例
|
|
178
83
|
|
|
179
|
-
|
|
84
|
+
下面的示例配置中,SSG 会渲染 `/`、`/about` 和 `/user/:id` 三条路由对应的页面。
|
|
180
85
|
|
|
181
|
-
|
|
86
|
+
对于 `/user/:id` 路由,`cookies` 添加到请求头中,同时会将 `params` 中的 `id` 替换为 `modernjs`。
|
|
182
87
|
|
|
183
|
-
```
|
|
88
|
+
```ts title="modern.config.ts"
|
|
184
89
|
export default defineConfig({
|
|
185
90
|
output: {
|
|
186
91
|
ssg: {
|
|
187
92
|
routes: [
|
|
93
|
+
'/',
|
|
94
|
+
'/about',
|
|
188
95
|
{
|
|
189
96
|
url: '/user/:id',
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
97
|
+
headers: {
|
|
98
|
+
cookies: "name=modernjs"
|
|
99
|
+
},
|
|
100
|
+
params: [{
|
|
101
|
+
id: 'modernjs',
|
|
102
|
+
}],
|
|
103
|
+
}
|
|
196
104
|
],
|
|
197
|
-
}
|
|
198
|
-
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
199
107
|
});
|
|
200
108
|
```
|
|
201
109
|
|
|
202
|
-
|
|
110
|
+
:::note
|
|
111
|
+
多入口的情况和单入口的配置方式一致,这里不再额外介绍。
|
|
112
|
+
:::
|
|
@@ -19,7 +19,7 @@ import SWC from '@modern-js/builder-doc/docs/zh/shared/swc.md';
|
|
|
19
19
|
|
|
20
20
|
## 在 Rspack 模式下使用
|
|
21
21
|
|
|
22
|
-
通过 `tools.swc` 可以设置 Rspack [builtin:swc-loader](https://
|
|
22
|
+
通过 `tools.swc` 可以设置 Rspack [builtin:swc-loader](https://rspack.dev/zh/guide/features/builtin-swc-loader) 的选项。
|
|
23
23
|
|
|
24
24
|
```
|
|
25
25
|
import { defineConfig } from '@modern-js/app-tools';
|
|
@@ -23,7 +23,7 @@ const tailwind = {
|
|
|
23
23
|
|
|
24
24
|
在使用 `tools.tailwindcss` 之前,你需要启用 Modern.js 的 Tailwind CSS 插件。
|
|
25
25
|
|
|
26
|
-
请阅读[「使用 Tailwind CSS」](/guides/basic-features/css
|
|
26
|
+
请阅读[「使用 Tailwind CSS」](/guides/basic-features/css/tailwindcss) 章节来了解开启方式。
|
|
27
27
|
|
|
28
28
|
### Function 类型
|
|
29
29
|
|
|
@@ -7,13 +7,6 @@
|
|
|
7
7
|
"collapsed": true
|
|
8
8
|
},
|
|
9
9
|
"code-split",
|
|
10
|
-
{
|
|
11
|
-
"type": "dir",
|
|
12
|
-
"name": "ssr",
|
|
13
|
-
"label": "use-ssr",
|
|
14
|
-
"collapsed": true
|
|
15
|
-
},
|
|
16
|
-
"ssg",
|
|
17
10
|
"compatibility",
|
|
18
11
|
"eslint",
|
|
19
12
|
"low-level",
|
|
@@ -21,6 +14,5 @@
|
|
|
21
14
|
"build-performance",
|
|
22
15
|
"inline-assets",
|
|
23
16
|
"optimize-bundle",
|
|
24
|
-
"using-storybook",
|
|
25
17
|
"web-server"
|
|
26
18
|
]
|
|
@@ -41,8 +41,8 @@ Modern.js 从 `MAJOR_VERSION.46.0` 起开始将底层的构建工具升级为 [R
|
|
|
41
41
|
| [CSS Minimizer 插件](https://github.com/rspack-contrib/rsbuild-plugin-css-minimizer) | 用于自定义 CSS 压缩工具,切换到 [cssnano](https://cssnano.co/) 或其他工具进行 CSS 压缩。 | [tools.minifyCss](/configure/app/tools/minify-css.html) |
|
|
42
42
|
| [Pug 插件](https://github.com/rspack-contrib/rsbuild-plugin-pug) | 提供对 Pug 模板引擎的支持 | [tools.pug](/configure/app/tools/pug.html) |
|
|
43
43
|
| [Rem 插件](https://github.com/rspack-contrib/rsbuild-plugin-rem) | 用于实现移动端页面的 rem 自适应布局 | [output.convertToRem](/configure/app/output/convert-to-rem.html) |
|
|
44
|
-
| [YAML 插件](https://github.com/rspack-contrib/rsbuild-plugin-yaml) | 用于引用 YAML 文件,并将其转换为 JavaScript 对象 | [TOML 文件](/guides/basic-features/json-files.html#toml-文件) |
|
|
45
|
-
| [TOML 插件](https://github.com/rspack-contrib/rsbuild-plugin-toml) | 用于引用 TOML 文件,并将其转换为 JavaScript 对象 | [YAML 文件](/guides/basic-features/json-files.html#yaml-文件) |
|
|
44
|
+
| [YAML 插件](https://github.com/rspack-contrib/rsbuild-plugin-yaml) | 用于引用 YAML 文件,并将其转换为 JavaScript 对象 | [TOML 文件](/guides/basic-features/static-assets/json-files.html#toml-文件) |
|
|
45
|
+
| [TOML 插件](https://github.com/rspack-contrib/rsbuild-plugin-toml) | 用于引用 TOML 文件,并将其转换为 JavaScript 对象 | [YAML 文件](/guides/basic-features/static-assets/json-files.html#yaml-文件) |
|
|
46
46
|
|
|
47
47
|
### 未内置插件
|
|
48
48
|
|
|
@@ -8,13 +8,13 @@ import Rspack from '@modern-js/builder-doc/docs/zh/shared/rspackTip.mdx';
|
|
|
8
8
|
|
|
9
9
|
<Rspack />
|
|
10
10
|
|
|
11
|
-
**Modern.js 提供开箱即用的 Rspack 支持**,你可以在成熟的
|
|
11
|
+
**Modern.js 提供开箱即用的 Rspack 支持**,你可以在成熟的 webpack 和更快的 Rspack 之间进行切换。
|
|
12
12
|
|
|
13
13
|
这篇文档会向你介绍如何在 Modern.js 中开启 Rspack 构建模式。
|
|
14
14
|
|
|
15
15
|
## 初始化 Rspack 项目
|
|
16
16
|
|
|
17
|
-
Modern.js
|
|
17
|
+
Modern.js 新项目已默认启用 Rspack 构建,只需执行 [初始化项目](/guides/get-started/quick-start.html#初始化项目),即可创建一个 Rspack 项目:
|
|
18
18
|
|
|
19
19
|
import InitRspackApp from '@site-docs/components/init-rspack-app';
|
|
20
20
|
|
|
@@ -22,16 +22,9 @@ import InitRspackApp from '@site-docs/components/init-rspack-app';
|
|
|
22
22
|
|
|
23
23
|
项目创建完成后,在项目中执行 `pnpm run dev` 即可体验项目,更多信息可参考[快速上手](/guides/get-started/quick-start.html)。
|
|
24
24
|
|
|
25
|
-
:::tip
|
|
26
|
-
在使用 Rspack 作为打包工具时,由于部分能力尚在开发中,以下 features 暂时无法使用,我们将在未来提供支持:
|
|
27
|
-
|
|
28
|
-
- 客户端渲染(CSR)使用 [useLoader](/guides/basic-features/data/data-fetch.html)
|
|
29
|
-
|
|
30
|
-
:::
|
|
31
|
-
|
|
32
25
|
## 开启 Rspack 构建
|
|
33
26
|
|
|
34
|
-
从 Modern.js MAJOR_VERSION.
|
|
27
|
+
从 Modern.js MAJOR_VERSION.59.0 版本起,在一个已有的 Modern.js 项目中,你仅需在 `modern.config.ts` 中添加以下配置,即可启用 Rspack 构建:
|
|
35
28
|
|
|
36
29
|
```diff title=modern.config.ts
|
|
37
30
|
import { appTools, defineConfig } from '@modern-js/app-tools';
|
|
@@ -39,14 +32,14 @@ import { appTools, defineConfig } from '@modern-js/app-tools';
|
|
|
39
32
|
export default defineConfig({
|
|
40
33
|
plugins: [
|
|
41
34
|
appTools({
|
|
42
|
-
+ bundler: '
|
|
35
|
+
+ bundler: 'rspack',
|
|
43
36
|
}),
|
|
44
37
|
],
|
|
45
38
|
});
|
|
46
39
|
```
|
|
47
40
|
|
|
48
41
|
:::tip
|
|
49
|
-
如果你当前版本低于 MAJOR_VERSION.
|
|
42
|
+
如果你当前版本低于 MAJOR_VERSION.59.0, 可通过执行 `npx modern upgrade` 进行升级。
|
|
50
43
|
:::
|
|
51
44
|
|
|
52
45
|
import RspackPrecautions from '@modern-js/builder-doc/docs/zh/shared/rspackPrecautions.md';
|
|
@@ -77,16 +70,9 @@ export default {
|
|
|
77
70
|
};
|
|
78
71
|
```
|
|
79
72
|
|
|
80
|
-
|
|
81
|
-
:::tip
|
|
82
|
-
开启 Rspack 构建能力后,目前有小部分配置在 Rspack 中还不支持使用,如 [source.moduleScopes](/configure/app/source/module-scopes)、[security.sri](/configure/app/security/sri) 等。
|
|
83
|
-
|
|
84
|
-
对于不支持的配置,我们在文档中有标注 `打包工具: 仅支持 webpack` 或 `打包工具: 仅支持 rspack`,可参考具体配置介绍。
|
|
85
|
-
:::
|
|
86
|
-
|
|
87
73
|
## 修改转译配置
|
|
88
74
|
|
|
89
|
-
Modern.js 在 Rspack 模式下使用 Rspack [builtin:swc-loader](https://
|
|
75
|
+
Modern.js 在 Rspack 模式下使用 Rspack [builtin:swc-loader](https://rspack.dev/zh/guide/features/builtin-swc-loader) 进行代码转译。
|
|
90
76
|
|
|
91
77
|
Modern.js 已对 `builtin:swc-loader` 的常见配置提供了更方便的配置方式,如:通过 [source.transformImport](/configure/app/source/transform-import) 配置组件库按需引入。如果对 `builtin:swc-loader` 有自定义配置的需求,可通过 [tools.swc](/configure/app/tools/swc) 进行配置:
|
|
92
78
|
|
|
@@ -112,7 +98,7 @@ export default defineConfig<'rspack'>({
|
|
|
112
98
|
|
|
113
99
|
通常情况下,Modern.js 内会集成 Rspack 的最新版本,通过 `npx modern upgrade` 即可将当前项目中的 Modern.js 相关依赖以及内置的 Rspack 更新至最新版本。
|
|
114
100
|
|
|
115
|
-
但 Modern.js 对于 Rspack
|
|
101
|
+
但 Modern.js 对于 Rspack 的依赖方式为锁版本方式(非自动升级),由于发版周期不同步等原因,可能会出现 Modern.js 内集成的 Rspack 版本落后于 Rspack 最新版本的情况。
|
|
116
102
|
|
|
117
103
|
当你执行 dev / build 命令时,Modern.js 会在[开启调试模式时](https://rsbuild.dev/zh/guide/debug/debug-mode)自动打印当前使用的 Rspack 版本:
|
|
118
104
|
|
|
@@ -147,9 +133,7 @@ export default defineConfig<'rspack'>({
|
|
|
147
133
|
"@rspack/plugin-react-refresh": "npm:@rspack/plugin-react-refresh@nightly"
|
|
148
134
|
},
|
|
149
135
|
"peerDependencyRules": {
|
|
150
|
-
"allowAny": [
|
|
151
|
-
"@rspack/*"
|
|
152
|
-
]
|
|
136
|
+
"allowAny": ["@rspack/*"]
|
|
153
137
|
}
|
|
154
138
|
}
|
|
155
139
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
[
|
|
2
|
-
"css",
|
|
3
2
|
"routes",
|
|
4
3
|
{
|
|
5
4
|
"type": "dir",
|
|
@@ -7,16 +6,39 @@
|
|
|
7
6
|
"label": "data-solution",
|
|
8
7
|
"collapsed": true
|
|
9
8
|
},
|
|
9
|
+
{
|
|
10
|
+
"type": "dir",
|
|
11
|
+
"name": "render",
|
|
12
|
+
"label": "rendering",
|
|
13
|
+
"collapsed": true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "dir",
|
|
17
|
+
"name": "css",
|
|
18
|
+
"label": "css-solution",
|
|
19
|
+
"collapsed": true
|
|
20
|
+
},
|
|
21
|
+
"html",
|
|
22
|
+
{
|
|
23
|
+
"type": "dir",
|
|
24
|
+
"name": "static-assets",
|
|
25
|
+
"label": "static-assets",
|
|
26
|
+
"collapsed": true
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "dir",
|
|
30
|
+
"name": "debug",
|
|
31
|
+
"label": "debug",
|
|
32
|
+
"collapsed": true
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"type": "dir",
|
|
36
|
+
"name": "testing",
|
|
37
|
+
"label": "testing",
|
|
38
|
+
"collapsed": true
|
|
39
|
+
},
|
|
10
40
|
"alias",
|
|
11
|
-
"mock",
|
|
12
|
-
"proxy",
|
|
13
41
|
"env-vars",
|
|
14
|
-
"html",
|
|
15
42
|
"output-files",
|
|
16
|
-
"static-assets",
|
|
17
|
-
"svg-assets",
|
|
18
|
-
"json-files",
|
|
19
|
-
"wasm-assets",
|
|
20
|
-
"css-modules",
|
|
21
43
|
"deploy"
|
|
22
44
|
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
["css", "css-modules", "css-in-js", "tailwindcss"]
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 使用 CSS-in-JS
|
|
2
|
+
|
|
3
|
+
CSS-in-JS 是一种可以将 CSS 样式写在 JS 文件里的技术。
|
|
4
|
+
|
|
5
|
+
Modern.js 集成了社区常用的 CSS-in-JS 实现库 [styled-components](https://styled-components.com/),它使用 JavaScript 的新特性 [Tagged template](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates) 编写组件的 CSS 样式。可以直接从 `@modern-js/runtime/styled` 引入 [styled-components](https://styled-components.com/) 的 API 进行使用。
|
|
6
|
+
|
|
7
|
+
当需要编写一个内部字体为红色的 `div` 组件时,可以如下实现:
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import styled from '@modern-js/runtime/styled';
|
|
11
|
+
|
|
12
|
+
const RedDiv = styled.div`
|
|
13
|
+
color: red;
|
|
14
|
+
`;
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
当需要根据组件的 `props` 动态设置组件样式时,例如 `props` 的属性 `primary` 为 `true` 时,按钮的颜色为白色,其他情况为红色,实现代码如下:
|
|
18
|
+
|
|
19
|
+
```js
|
|
20
|
+
import styled from '@modern-js/runtime/styled';
|
|
21
|
+
|
|
22
|
+
const Button = styled.button`
|
|
23
|
+
color: ${props => (props.primary ? 'white' : 'red')};
|
|
24
|
+
font-size: 1em;
|
|
25
|
+
`;
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
关于 styled-components 的更多用法,请参考 [styled-components 官网](https://styled-components.com/)。
|
|
29
|
+
|
|
30
|
+
Modern.js 内部集成了 Babel 的 [babel-plugin-styled-components](https://github.com/styled-components/babel-plugin-styled-components) 插件,你可以通过 [tools.styledComponents](/configure/app/tools/styled-components) 对插件进行配置。
|
|
31
|
+
|
|
32
|
+
:::tip 提示
|
|
33
|
+
如果需要使用 [styled-jsx](https://www.npmjs.com/package/styled-jsx)、[Emotion](https://emotion.sh/) 等其他 CSS-in-JS 库,需要先安装对应库的依赖。具体使用方式请参考对应库的官网。
|
|
34
|
+
:::
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 1
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 引入 CSS
|
|
6
|
+
|
|
7
|
+
Modern.js 内置多种常用的 CSS 开发方案,包括 Less / Sass / Stylus 预处理器、PostCSS、CSS Modules、CSS-in-JS 和 Tailwind CSS。
|
|
8
|
+
|
|
9
|
+
## 使用 Less、Sass 和 Stylus
|
|
10
|
+
|
|
11
|
+
Modern.js 内置了社区流行的 CSS 预处理器,包括 Less 和 Sass。
|
|
12
|
+
|
|
13
|
+
默认情况下,你不需要对 Less 和 Sass 进行任何配置。如果你有自定义 loader 配置的需求,可以通过配置 [tools.less](/configure/app/tools/less)、[tools.sass](/configure/app/tools/sass) 来进行设置。
|
|
14
|
+
|
|
15
|
+
你也可以在 Modern.js 中使用 Stylus,只需要安装 Rsbuild 提供的 Stylus 插件即可,使用方式请参考 [Stylus 插件](https://rsbuild.dev/zh/plugins/list/plugin-stylus)。
|
|
16
|
+
|
|
17
|
+
## 使用 PostCSS
|
|
18
|
+
|
|
19
|
+
Modern.js 内置了 [PostCSS](https://postcss.org/) 来转换 CSS 代码。
|
|
20
|
+
|
|
21
|
+
请阅读 [Rsbuild - 使用 PostCSS](https://rsbuild.dev/zh/guide/basic/css-usage#%E4%BD%BF%E7%94%A8-postcss) 了解更多用法。
|
|
22
|
+
|
|
23
|
+
## 使用 Uno CSS
|
|
24
|
+
|
|
25
|
+
请阅读 [Rsbuild - 使用 UnoCSS](https://rsbuild.dev/zh/guide/basic/unocss) 了解更多用法。
|
|
@@ -1,65 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
sidebar_position: 1
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# 样式开发
|
|
6
|
-
|
|
7
|
-
Modern.js 内置多种常用的 CSS 开发方案,包括 Less / Sass / Stylus 预处理器、PostCSS、CSS Modules、CSS-in-JS 和 Tailwind CSS。
|
|
8
|
-
|
|
9
|
-
## 使用 Less、Sass 和 Stylus
|
|
10
|
-
|
|
11
|
-
Modern.js 内置了社区流行的 CSS 预处理器,包括 Less 和 Sass。
|
|
12
|
-
|
|
13
|
-
默认情况下,你不需要对 Less 和 Sass 进行任何配置。如果你有自定义 loader 配置的需求,可以通过配置 [tools.less](/configure/app/tools/less)、[tools.sass](/configure/app/tools/sass) 来进行设置。
|
|
14
|
-
|
|
15
|
-
你也可以在 Modern.js 中使用 Stylus,只需要安装 Rsbuild 提供的 Stylus 插件即可,使用方式请参考 [Stylus 插件](https://rsbuild.dev/zh/plugins/list/plugin-stylus)。
|
|
16
|
-
|
|
17
|
-
## 使用 PostCSS
|
|
18
|
-
|
|
19
|
-
Modern.js 内置了 [PostCSS](https://postcss.org/) 来转换 CSS 代码。
|
|
20
|
-
|
|
21
|
-
请阅读 [Rsbuild - 使用 PostCSS](https://rsbuild.dev/zh/guide/basic/css-usage#%E4%BD%BF%E7%94%A8-postcss) 了解更多用法。
|
|
22
|
-
|
|
23
|
-
## 使用 CSS Modules
|
|
24
|
-
|
|
25
|
-
请阅读 [使用 CSS Modules](/guides/basic-features/css-modules) 章节来了解 CSS Modules 的完整用法。
|
|
26
|
-
|
|
27
|
-
## 使用 CSS-in-JS
|
|
28
|
-
|
|
29
|
-
CSS-in-JS 是一种可以将 CSS 样式写在 JS 文件里的技术。
|
|
30
|
-
|
|
31
|
-
Modern.js 集成了社区常用的 CSS-in-JS 实现库 [styled-components](https://styled-components.com/),它使用 JavaScript 的新特性 [Tagged template](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates) 编写组件的 CSS 样式。可以直接从 `@modern-js/runtime/styled` 引入 [styled-components](https://styled-components.com/) 的 API 进行使用。
|
|
32
|
-
|
|
33
|
-
当需要编写一个内部字体为红色的 `div` 组件时,可以如下实现:
|
|
34
|
-
|
|
35
|
-
```js
|
|
36
|
-
import styled from '@modern-js/runtime/styled';
|
|
37
|
-
|
|
38
|
-
const RedDiv = styled.div`
|
|
39
|
-
color: red;
|
|
40
|
-
`;
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
当需要根据组件的 `props` 动态设置组件样式时,例如 `props` 的属性 `primary` 为 `true` 时,按钮的颜色为白色,其他情况为红色,实现代码如下:
|
|
44
|
-
|
|
45
|
-
```js
|
|
46
|
-
import styled from '@modern-js/runtime/styled';
|
|
47
|
-
|
|
48
|
-
const Button = styled.button`
|
|
49
|
-
color: ${props => (props.primary ? 'white' : 'red')};
|
|
50
|
-
font-size: 1em;
|
|
51
|
-
`;
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
关于 styled-components 的更多用法,请参考 [styled-components 官网](https://styled-components.com/)。
|
|
55
|
-
|
|
56
|
-
Modern.js 内部集成了 Babel 的 [babel-plugin-styled-components](https://github.com/styled-components/babel-plugin-styled-components) 插件,你可以通过 [tools.styledComponents](/configure/app/tools/styled-components) 对插件进行配置。
|
|
57
|
-
|
|
58
|
-
:::tip 提示
|
|
59
|
-
如果需要使用 [styled-jsx](https://www.npmjs.com/package/styled-jsx)、[Emotion](https://emotion.sh/) 等其他 CSS-in-JS 库,需要先安装对应库的依赖。具体使用方式请参考对应库的官网。
|
|
60
|
-
:::
|
|
61
|
-
|
|
62
|
-
## 使用 Tailwind CSS
|
|
1
|
+
# 使用 Tailwind CSS
|
|
63
2
|
|
|
64
3
|
[Tailwind CSS](https://tailwindcss.com/) 是一个以 Utility Class 为基础的 CSS 框架和设计系统,可以快速地为组件添加常用样式,同时支持主题样式的灵活扩展。
|
|
65
4
|
|
|
@@ -153,7 +92,7 @@ Tailwind CSS 官方提供了 [Tailwind CSS IntelliSense](https://github.com/tail
|
|
|
153
92
|
1. 在 VS Code 中安装 [Tailwind CSS IntelliSense](https://github.com/tailwindlabs/tailwindcss-intellisense) 插件。
|
|
154
93
|
2. 如果项目的根目录没有 `tailwind.config.{ts,js}` 文件,那么你需要创建该文件,并写入当前项目的 Tailwind CSS 配置,否则 IDE 插件将无法正确生效。
|
|
155
94
|
|
|
156
|
-
|
|
95
|
+
## Tailwind CSS 版本
|
|
157
96
|
|
|
158
97
|
Modern.js 同时支持 Tailwind CSS v2 和 v3 版本,框架会识别项目 `package.json` 中的 `tailwindcss` 依赖版本,并启用相应的配置。默认情况下,我们会为你安装 Tailwind CSS v3 版本。
|
|
159
98
|
|
|
@@ -162,7 +101,7 @@ Modern.js 同时支持 Tailwind CSS v2 和 v3 版本,框架会识别项目 `pa
|
|
|
162
101
|
- [Tailwind CSS v3.0](https://tailwindcss.com/blog/tailwindcss-v3)
|
|
163
102
|
- [Upgrade Guide](https://tailwindcss.com/docs/upgrade-guide)
|
|
164
103
|
|
|
165
|
-
|
|
104
|
+
## 浏览器兼容性
|
|
166
105
|
|
|
167
106
|
Tailwind CSS v2 和 v3 均不支持 IE 11 浏览器,相关背景请参考:
|
|
168
107
|
|