@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.
Files changed (140) hide show
  1. package/docs/en/apis/app/runtime/core/use-loader.mdx +1 -1
  2. package/docs/en/community/blog/_meta.json +1 -6
  3. package/docs/en/components/deploy.mdx +1 -1
  4. package/docs/en/components/init-app.mdx +0 -1
  5. package/docs/en/components/init-rspack-app.mdx +0 -1
  6. package/docs/en/components/ssr-monitor.mdx +3 -0
  7. package/docs/en/configure/_meta.json +1 -1
  8. package/docs/en/configure/app/output/ssg.mdx +52 -141
  9. package/docs/en/configure/app/tools/swc.mdx +1 -1
  10. package/docs/en/configure/app/tools/tailwindcss.mdx +1 -1
  11. package/docs/en/guides/advanced-features/_meta.json +0 -8
  12. package/docs/en/guides/advanced-features/bff/_meta.json +1 -6
  13. package/docs/en/guides/advanced-features/rsbuild-plugin.mdx +2 -2
  14. package/docs/en/guides/advanced-features/rspack-start.mdx +7 -22
  15. package/docs/en/guides/basic-features/_meta.json +31 -9
  16. package/docs/en/guides/basic-features/css/_meta.json +1 -0
  17. package/docs/en/guides/basic-features/css/css-in-js.mdx +34 -0
  18. package/docs/en/guides/basic-features/{css-modules.mdx → css/css-modules.mdx} +0 -4
  19. package/docs/en/guides/basic-features/css/css.mdx +25 -0
  20. package/docs/en/guides/basic-features/{css.mdx → css/tailwindcss.mdx} +5 -66
  21. package/docs/en/guides/basic-features/data/_meta.json +1 -4
  22. package/docs/en/guides/basic-features/data/data-fetch.mdx +134 -235
  23. package/docs/en/guides/basic-features/data/data-write.mdx +66 -77
  24. package/docs/en/guides/basic-features/debug/_meta.json +1 -0
  25. package/docs/en/guides/basic-features/debug/rsdoctor.mdx +57 -0
  26. package/docs/en/guides/{advanced-features → basic-features/debug}/using-storybook.mdx +2 -0
  27. package/docs/en/guides/basic-features/render/_meta.json +1 -0
  28. package/docs/en/guides/basic-features/render/ssg.mdx +208 -0
  29. package/docs/en/guides/{advanced-features/ssr/cache.mdx → basic-features/render/ssr-cache.mdx} +38 -50
  30. package/docs/en/guides/basic-features/render/ssr.mdx +301 -0
  31. package/docs/en/guides/basic-features/render/streaming-ssr.mdx +230 -0
  32. package/docs/en/guides/basic-features/routes.mdx +275 -263
  33. package/docs/en/guides/basic-features/static-assets/_meta.json +1 -0
  34. package/docs/en/guides/basic-features/static-assets.mdx +1 -1
  35. package/docs/en/guides/basic-features/testing/_meta.json +1 -0
  36. package/docs/en/guides/basic-features/testing/cypress.mdx +95 -0
  37. package/docs/en/guides/basic-features/testing/jest.mdx +148 -0
  38. package/docs/en/guides/basic-features/testing/playwright.mdx +111 -0
  39. package/docs/en/guides/basic-features/testing/vitest.mdx +100 -0
  40. package/docs/en/guides/concept/_meta.json +1 -4
  41. package/docs/en/guides/concept/entries.mdx +78 -47
  42. package/docs/en/guides/get-started/_meta.json +1 -7
  43. package/docs/en/guides/get-started/introduction.mdx +1 -1
  44. package/docs/en/guides/get-started/quick-start.mdx +1 -2
  45. package/docs/en/guides/get-started/tech-stack.mdx +4 -6
  46. package/docs/en/guides/get-started/upgrade.mdx +16 -2
  47. package/docs/en/guides/topic-detail/framework-plugin/_meta.json +1 -1
  48. package/docs/en/guides/topic-detail/generator/_meta.json +1 -1
  49. package/docs/en/guides/topic-detail/generator/create/_meta.json +1 -5
  50. package/docs/en/guides/topic-detail/generator/create/config.mdx +0 -10
  51. package/docs/en/guides/topic-detail/generator/create/use.mdx +0 -1
  52. package/docs/en/guides/topic-detail/generator/new/_meta.json +1 -5
  53. package/docs/en/guides/topic-detail/generator/plugin/_meta.json +1 -1
  54. package/docs/en/guides/troubleshooting/_meta.json +1 -6
  55. package/docs/en/tutorials/first-app/c03-css.mdx +1 -1
  56. package/docs/zh/apis/app/runtime/core/use-loader.mdx +1 -1
  57. package/docs/zh/community/blog/_meta.json +1 -6
  58. package/docs/zh/components/deploy.mdx +1 -1
  59. package/docs/zh/components/init-app.mdx +0 -1
  60. package/docs/zh/components/init-rspack-app.mdx +0 -1
  61. package/docs/zh/components/ssr-monitor.mdx +3 -0
  62. package/docs/zh/configure/_meta.json +1 -1
  63. package/docs/zh/configure/app/output/ssg.mdx +49 -139
  64. package/docs/zh/configure/app/tools/swc.mdx +1 -1
  65. package/docs/zh/configure/app/tools/tailwindcss.mdx +1 -1
  66. package/docs/zh/guides/advanced-features/_meta.json +0 -8
  67. package/docs/zh/guides/advanced-features/bff/_meta.json +1 -6
  68. package/docs/zh/guides/advanced-features/rsbuild-plugin.mdx +2 -2
  69. package/docs/zh/guides/advanced-features/rspack-start.mdx +8 -24
  70. package/docs/zh/guides/basic-features/_meta.json +31 -9
  71. package/docs/zh/guides/basic-features/css/_meta.json +1 -0
  72. package/docs/zh/guides/basic-features/css/css-in-js.mdx +34 -0
  73. package/docs/zh/guides/basic-features/css/css.mdx +25 -0
  74. package/docs/zh/guides/basic-features/{css.mdx → css/tailwindcss.mdx} +3 -64
  75. package/docs/zh/guides/basic-features/data/_meta.json +1 -4
  76. package/docs/zh/guides/basic-features/data/data-fetch.mdx +98 -214
  77. package/docs/zh/guides/basic-features/data/data-write.mdx +54 -55
  78. package/docs/zh/guides/basic-features/debug/_meta.json +1 -0
  79. package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +57 -0
  80. package/docs/zh/guides/{advanced-features → basic-features/debug}/using-storybook.mdx +1 -1
  81. package/docs/zh/guides/basic-features/render/_meta.json +1 -0
  82. package/docs/zh/guides/basic-features/render/ssg.mdx +210 -0
  83. package/docs/zh/guides/{advanced-features/ssr/cache.mdx → basic-features/render/ssr-cache.mdx} +16 -26
  84. package/docs/zh/guides/basic-features/render/ssr.mdx +309 -0
  85. package/docs/zh/guides/{advanced-features/ssr/stream.mdx → basic-features/render/streaming-ssr.mdx} +22 -37
  86. package/docs/zh/guides/basic-features/routes.mdx +252 -237
  87. package/docs/zh/guides/basic-features/static-assets/_meta.json +1 -0
  88. package/docs/zh/guides/basic-features/static-assets.mdx +2 -6
  89. package/docs/zh/guides/basic-features/testing/_meta.json +1 -0
  90. package/docs/zh/guides/basic-features/testing/cypress.mdx +95 -0
  91. package/docs/zh/guides/basic-features/testing/jest.mdx +148 -0
  92. package/docs/zh/guides/basic-features/testing/playwright.mdx +112 -0
  93. package/docs/zh/guides/basic-features/testing/vitest.mdx +100 -0
  94. package/docs/zh/guides/concept/_meta.json +1 -4
  95. package/docs/zh/guides/concept/entries.mdx +80 -58
  96. package/docs/zh/guides/get-started/_meta.json +1 -7
  97. package/docs/zh/guides/get-started/introduction.mdx +2 -2
  98. package/docs/zh/guides/get-started/quick-start.mdx +1 -2
  99. package/docs/zh/guides/get-started/tech-stack.mdx +8 -10
  100. package/docs/zh/guides/get-started/upgrade.mdx +15 -1
  101. package/docs/zh/guides/topic-detail/framework-plugin/_meta.json +1 -1
  102. package/docs/zh/guides/topic-detail/generator/_meta.json +1 -1
  103. package/docs/zh/guides/topic-detail/generator/create/_meta.json +1 -5
  104. package/docs/zh/guides/topic-detail/generator/create/config.mdx +0 -10
  105. package/docs/zh/guides/topic-detail/generator/create/use.mdx +0 -1
  106. package/docs/zh/guides/topic-detail/generator/new/_meta.json +1 -5
  107. package/docs/zh/guides/topic-detail/generator/plugin/_meta.json +1 -1
  108. package/docs/zh/guides/troubleshooting/_meta.json +1 -6
  109. package/docs/zh/tutorials/first-app/c03-css.mdx +1 -1
  110. package/i18n.json +16 -4
  111. package/package.json +6 -6
  112. package/rspress.config.ts +1 -1
  113. package/src/components/ContentCard/index.tsx +1 -1
  114. package/src/components/Sandpack/index.tsx +1 -1
  115. package/src/components/ShowcaseList/index.tsx +1 -1
  116. package/src/i18n/index.ts +1 -1
  117. package/src/pages/index.tsx +2 -2
  118. package/docs/en/apis/app/hooks/config/storybook.mdx +0 -37
  119. package/docs/en/guides/advanced-features/ssg.mdx +0 -116
  120. package/docs/en/guides/advanced-features/ssr/_meta.json +0 -5
  121. package/docs/en/guides/advanced-features/ssr/index.mdx +0 -23
  122. package/docs/en/guides/advanced-features/ssr/stream.mdx +0 -248
  123. package/docs/en/guides/advanced-features/ssr/usage.mdx +0 -341
  124. package/docs/en/guides/advanced-features/ssr.mdx +0 -555
  125. package/docs/zh/apis/app/hooks/config/storybook.mdx +0 -38
  126. package/docs/zh/guides/advanced-features/ssg.mdx +0 -116
  127. package/docs/zh/guides/advanced-features/ssr/_meta.json +0 -5
  128. package/docs/zh/guides/advanced-features/ssr/index.mdx +0 -23
  129. package/docs/zh/guides/advanced-features/ssr/usage.mdx +0 -329
  130. /package/docs/en/guides/basic-features/{mock.mdx → debug/mock.mdx} +0 -0
  131. /package/docs/en/guides/basic-features/{proxy.mdx → debug/proxy.mdx} +0 -0
  132. /package/docs/en/guides/basic-features/{json-files.mdx → static-assets/json-files.mdx} +0 -0
  133. /package/docs/en/guides/basic-features/{svg-assets.mdx → static-assets/svg-assets.mdx} +0 -0
  134. /package/docs/en/guides/basic-features/{wasm-assets.mdx → static-assets/wasm-assets.mdx} +0 -0
  135. /package/docs/zh/guides/basic-features/{css-modules.mdx → css/css-modules.mdx} +0 -0
  136. /package/docs/zh/guides/basic-features/{mock.mdx → debug/mock.mdx} +0 -0
  137. /package/docs/zh/guides/basic-features/{proxy.mdx → debug/proxy.mdx} +0 -0
  138. /package/docs/zh/guides/basic-features/{json-files.mdx → static-assets/json-files.mdx} +0 -0
  139. /package/docs/zh/guides/basic-features/{svg-assets.mdx → static-assets/svg-assets.mdx} +0 -0
  140. /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` | `function`
7
+ - **类型:** `boolean` | `object`
8
8
  - **默认值:** `undefined`
9
9
 
10
- 开启**自控式路由**或**约定式路由** SSG 功能的配置。
10
+ 开启应用 SSG 功能的配置
11
11
 
12
- :::info 开启 SSG 功能
13
- 此配置需要在开启 SSG 功能情况下才会生效。请阅读 [静态站点生成](/guides/advanced-features/ssg) 文档了解如何开启 SSG 功能。
12
+ :::tip 开启 SSG 功能
13
+ 此配置需要在开启 SSG 功能情况下才会生效。请阅读 [静态站点生成](/guides/basic-features/render/ssg) 文档了解如何开启 SSG 功能及使用场景。
14
14
  :::
15
15
 
16
- :::info 客户端路由
17
- 相关内容可以查看[路由方案](/guides/basic-features/routes)。
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
- `modern.config.js` 中做以下设置:
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
- ├── src
73
- ├── entryA
74
- └── routes
75
- │ │ ├── layout.tsx
76
- │ │ ├── page.tsx
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
- 默认情况下,所有约定式路由的入口,在设置 `output.ssg` 配置为 `true` 后都会在构建阶段渲染。可以配置 `false` 来取消指定入口的的默认行为,例如取消上述 entryA 入口在构建时的渲染:
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
- 路由中设置的 `headers` 会覆盖入口中设置的 `headers`。
143
-
59
+ 更多关于**约定式路由**和**自控式路由**在开启 SSG 后的默认行为,请阅读 [静态站点生成](/guides/basic-features/render/ssg) 。
144
60
  :::
145
61
 
146
- ### 阻止默认行为
62
+ ## Object 类型
147
63
 
148
- 默认情况下,**约定式路由**的路由会全部开启 SSG。Modern.js 提供了另一个字段,用来阻止默认的 SSG 行为。
64
+ 当值类型为 `Object` 时,可以配置如下属性。
149
65
 
150
- 例如以下目录结构,`/`、`/user`、`/user/profle` 三条路由都开启 SSG:
66
+ ### 配置类型
151
67
 
152
- ```bash
153
- .
154
- ├── src
155
- │ └── routes
156
- │ ├── layout.tsx
157
- │ ├── page.tsx
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
- ```js
168
- export default defineConfig({
169
- output: {
170
- ssg: {
171
- preventDefault: ['/user'],
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
- 部分路由可能是动态的,例如自控式路由中的 `/user/:id` 或是约定式路由中 `user/[id]/page.tsx` 文件生成的路由。
84
+ 下面的示例配置中,SSG 会渲染 `/`、`/about` `/user/:id` 三条路由对应的页面。
180
85
 
181
- 可以在 `output.ssg` 中配置具体的参数,渲染指定参数的路由,例如:
86
+ 对于 `/user/:id` 路由,`cookies` 添加到请求头中,同时会将 `params` 中的 `id` 替换为 `modernjs`。
182
87
 
183
- ```js
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
- params: [
191
- {
192
- id: 'modernjs',
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
- 动态路由和 SSG 的组合,在根据 CMS 系统数据变更,实时生成静态页面时非常有用。
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://www.rspack.dev/guide/builtin-swc-loader) 的选项。
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.html#使用-tailwind-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
  ]
@@ -1,6 +1 @@
1
- [
2
- "function",
3
- "type",
4
- "frameworks",
5
- "sdk"
6
- ]
1
+ ["function", "type", "frameworks", "sdk"]
@@ -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 支持**,你可以在成熟的 Webpack 和更快的 Rspack 之间进行切换。
11
+ **Modern.js 提供开箱即用的 Rspack 支持**,你可以在成熟的 webpack 和更快的 Rspack 之间进行切换。
12
12
 
13
13
  这篇文档会向你介绍如何在 Modern.js 中开启 Rspack 构建模式。
14
14
 
15
15
  ## 初始化 Rspack 项目
16
16
 
17
- Modern.js 生成器会提供一个可交互的问答界面,只需将构建工具选择为 **Rspack**,即可创建一个 Rspack 项目:
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.46.0 版本起,在一个已有的 Modern.js 项目中,你仅需在 `modern.config.ts` 中添加以下配置,即可启用 Rspack 构建:
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: 'experimental-rspack',
35
+ + bundler: 'rspack',
43
36
  }),
44
37
  ],
45
38
  });
46
39
  ```
47
40
 
48
41
  :::tip
49
- 如果你当前版本低于 MAJOR_VERSION.46.0, 可通过执行 `npx modern upgrade` 进行升级。
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://www.rspack.dev/zh/guide/builtin-swc-loader.html) 进行代码转译。
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 的依赖方式为锁版本方式(非自动升级),由于发版周期不同步等原因,可能会出现 Modern.js 内集成的 Rspack 版本落后于 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
- ### Tailwind CSS 版本
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
 
@@ -1,4 +1 @@
1
- [
2
- "data-fetch",
3
- "data-write"
4
- ]
1
+ ["data-fetch", "data-write"]