@modern-js/main-doc 2.58.3 → 2.59.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. package/docs/en/apis/app/runtime/core/use-loader.mdx +1 -1
  2. package/docs/en/components/init-app.mdx +0 -1
  3. package/docs/en/components/init-rspack-app.mdx +0 -1
  4. package/docs/en/components/ssr-monitor.mdx +3 -0
  5. package/docs/en/configure/app/output/ssg.mdx +52 -141
  6. package/docs/en/configure/app/tools/tailwindcss.mdx +1 -1
  7. package/docs/en/guides/advanced-features/_meta.json +0 -8
  8. package/docs/en/guides/advanced-features/rsbuild-plugin.mdx +2 -2
  9. package/docs/en/guides/advanced-features/rspack-start.mdx +6 -14
  10. package/docs/en/guides/basic-features/_meta.json +31 -9
  11. package/docs/en/guides/basic-features/css/_meta.json +1 -0
  12. package/docs/en/guides/basic-features/css/css-in-js.mdx +34 -0
  13. package/docs/en/guides/basic-features/{css-modules.mdx → css/css-modules.mdx} +0 -4
  14. package/docs/en/guides/basic-features/css/css.mdx +25 -0
  15. package/docs/en/guides/basic-features/{css.mdx → css/tailwindcss.mdx} +5 -66
  16. package/docs/en/guides/basic-features/data/data-fetch.mdx +134 -235
  17. package/docs/en/guides/basic-features/data/data-write.mdx +66 -77
  18. package/docs/en/guides/basic-features/debug/_meta.json +1 -0
  19. package/docs/en/guides/basic-features/debug/rsdoctor.mdx +57 -0
  20. package/docs/en/guides/{advanced-features → basic-features/debug}/using-storybook.mdx +2 -0
  21. package/docs/en/guides/basic-features/render/_meta.json +1 -0
  22. package/docs/en/guides/basic-features/render/ssg.mdx +208 -0
  23. package/docs/en/guides/{advanced-features/ssr/cache.mdx → basic-features/render/ssr-cache.mdx} +38 -50
  24. package/docs/en/guides/basic-features/render/ssr.mdx +301 -0
  25. package/docs/en/guides/basic-features/render/streaming-ssr.mdx +230 -0
  26. package/docs/en/guides/basic-features/routes.mdx +275 -263
  27. package/docs/en/guides/basic-features/static-assets/_meta.json +1 -0
  28. package/docs/en/guides/basic-features/static-assets.mdx +1 -1
  29. package/docs/en/guides/basic-features/testing/_meta.json +1 -0
  30. package/docs/en/guides/basic-features/testing/cypress.mdx +95 -0
  31. package/docs/en/guides/basic-features/testing/jest.mdx +148 -0
  32. package/docs/en/guides/basic-features/testing/playwright.mdx +111 -0
  33. package/docs/en/guides/basic-features/testing/vitest.mdx +100 -0
  34. package/docs/en/guides/concept/entries.mdx +9 -2
  35. package/docs/en/guides/get-started/quick-start.mdx +1 -1
  36. package/docs/en/guides/get-started/tech-stack.mdx +4 -4
  37. package/docs/en/guides/topic-detail/generator/create/config.mdx +0 -10
  38. package/docs/en/guides/topic-detail/generator/create/use.mdx +0 -1
  39. package/docs/en/tutorials/first-app/c03-css.mdx +1 -1
  40. package/docs/zh/apis/app/runtime/core/use-loader.mdx +1 -1
  41. package/docs/zh/components/init-app.mdx +0 -1
  42. package/docs/zh/components/init-rspack-app.mdx +0 -1
  43. package/docs/zh/components/ssr-monitor.mdx +3 -0
  44. package/docs/zh/configure/app/output/ssg.mdx +49 -139
  45. package/docs/zh/configure/app/tools/tailwindcss.mdx +1 -1
  46. package/docs/zh/guides/advanced-features/_meta.json +0 -8
  47. package/docs/zh/guides/advanced-features/rsbuild-plugin.mdx +2 -2
  48. package/docs/zh/guides/advanced-features/rspack-start.mdx +7 -16
  49. package/docs/zh/guides/basic-features/_meta.json +31 -9
  50. package/docs/zh/guides/basic-features/css/_meta.json +1 -0
  51. package/docs/zh/guides/basic-features/css/css-in-js.mdx +34 -0
  52. package/docs/zh/guides/basic-features/css/css.mdx +25 -0
  53. package/docs/zh/guides/basic-features/{css.mdx → css/tailwindcss.mdx} +3 -64
  54. package/docs/zh/guides/basic-features/data/data-fetch.mdx +96 -211
  55. package/docs/zh/guides/basic-features/data/data-write.mdx +54 -55
  56. package/docs/zh/guides/basic-features/debug/_meta.json +1 -0
  57. package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +57 -0
  58. package/docs/zh/guides/{advanced-features → basic-features/debug}/using-storybook.mdx +1 -1
  59. package/docs/zh/guides/basic-features/render/_meta.json +1 -0
  60. package/docs/zh/guides/basic-features/render/ssg.mdx +210 -0
  61. package/docs/zh/guides/{advanced-features/ssr/cache.mdx → basic-features/render/ssr-cache.mdx} +16 -26
  62. package/docs/zh/guides/basic-features/render/ssr.mdx +309 -0
  63. package/docs/zh/guides/{advanced-features/ssr/stream.mdx → basic-features/render/streaming-ssr.mdx} +22 -37
  64. package/docs/zh/guides/basic-features/routes.mdx +252 -237
  65. package/docs/zh/guides/basic-features/static-assets/_meta.json +1 -0
  66. package/docs/zh/guides/basic-features/static-assets.mdx +2 -6
  67. package/docs/zh/guides/basic-features/testing/_meta.json +1 -0
  68. package/docs/zh/guides/basic-features/testing/cypress.mdx +95 -0
  69. package/docs/zh/guides/basic-features/testing/jest.mdx +148 -0
  70. package/docs/zh/guides/basic-features/testing/playwright.mdx +112 -0
  71. package/docs/zh/guides/basic-features/testing/vitest.mdx +100 -0
  72. package/docs/zh/guides/concept/entries.mdx +6 -3
  73. package/docs/zh/guides/get-started/quick-start.mdx +1 -1
  74. package/docs/zh/guides/get-started/tech-stack.mdx +8 -8
  75. package/docs/zh/guides/topic-detail/generator/create/config.mdx +0 -10
  76. package/docs/zh/guides/topic-detail/generator/create/use.mdx +0 -1
  77. package/docs/zh/tutorials/first-app/c03-css.mdx +1 -1
  78. package/i18n.json +16 -4
  79. package/package.json +6 -6
  80. package/docs/en/apis/app/hooks/config/storybook.mdx +0 -37
  81. package/docs/en/guides/advanced-features/ssg.mdx +0 -116
  82. package/docs/en/guides/advanced-features/ssr/_meta.json +0 -1
  83. package/docs/en/guides/advanced-features/ssr/index.mdx +0 -23
  84. package/docs/en/guides/advanced-features/ssr/stream.mdx +0 -248
  85. package/docs/en/guides/advanced-features/ssr/usage.mdx +0 -341
  86. package/docs/en/guides/advanced-features/ssr.mdx +0 -555
  87. package/docs/zh/apis/app/hooks/config/storybook.mdx +0 -38
  88. package/docs/zh/guides/advanced-features/ssg.mdx +0 -116
  89. package/docs/zh/guides/advanced-features/ssr/_meta.json +0 -1
  90. package/docs/zh/guides/advanced-features/ssr/index.mdx +0 -23
  91. package/docs/zh/guides/advanced-features/ssr/usage.mdx +0 -329
  92. /package/docs/en/guides/basic-features/{mock.mdx → debug/mock.mdx} +0 -0
  93. /package/docs/en/guides/basic-features/{proxy.mdx → debug/proxy.mdx} +0 -0
  94. /package/docs/en/guides/basic-features/{json-files.mdx → static-assets/json-files.mdx} +0 -0
  95. /package/docs/en/guides/basic-features/{svg-assets.mdx → static-assets/svg-assets.mdx} +0 -0
  96. /package/docs/en/guides/basic-features/{wasm-assets.mdx → static-assets/wasm-assets.mdx} +0 -0
  97. /package/docs/zh/guides/basic-features/{css-modules.mdx → css/css-modules.mdx} +0 -0
  98. /package/docs/zh/guides/basic-features/{mock.mdx → debug/mock.mdx} +0 -0
  99. /package/docs/zh/guides/basic-features/{proxy.mdx → debug/proxy.mdx} +0 -0
  100. /package/docs/zh/guides/basic-features/{json-files.mdx → static-assets/json-files.mdx} +0 -0
  101. /package/docs/zh/guides/basic-features/{svg-assets.mdx → static-assets/svg-assets.mdx} +0 -0
  102. /package/docs/zh/guides/basic-features/{wasm-assets.mdx → static-assets/wasm-assets.mdx} +0 -0
@@ -52,7 +52,7 @@ function useLoader(loaderFn: LoaderFn, options: Options): ReturnData;
52
52
  - `initialData`: the initial data before the first execution,.
53
53
  - `skip`: when the value is `true`, the function does not execute.
54
54
  - `params`: when the result of the `params` serialization changes, the function is re-executed. `params` is also passed in as the second argument of the function.
55
- - `static`: when the value is `true`, `useLoader` is used for [SSG](/guides/advanced-features/ssg).
55
+ - `static`: when the value is `true`, `useLoader` is used for [SSG](/guides/basic-features/render/ssg).
56
56
 
57
57
  ### Return Value
58
58
 
@@ -4,7 +4,6 @@
4
4
  ? Please select the type of project you want to create: Web App
5
5
  ? Please select the programming language: TS
6
6
  ? Please select the package manager: pnpm
7
- ? Please select the bundler: webpack
8
7
  ```
9
8
 
10
9
  After create the project, Modern.js will automatically install dependencies and create a git repository.
@@ -3,5 +3,4 @@ $ npx @modern-js/create@latest myapp
3
3
  ? Please select the type of project you want to create: Web App
4
4
  ? Please select the programming language: TS
5
5
  ? Please select the package manager: pnpm
6
- ? Please select the bundler: Rspack
7
6
  ```
@@ -0,0 +1,3 @@
1
+ :::note
2
+ Coming soon
3
+ :::
@@ -4,46 +4,24 @@ title: ssg
4
4
 
5
5
  # output.ssg
6
6
 
7
- - **Type:** `boolean` | `object` | `function`
8
- - **Default:** `undefined`
7
+ - **Type:** `boolean` | `object`
8
+ - **Default Value:** `undefined`
9
9
 
10
- Enable the SSG for **Self-controlled Routing** or **Conventional Routing**.
10
+ Configuration to enable the application’s SSG (Static Site Generation) feature.
11
11
 
12
- :::info Enable SSG
13
- This configuration will only be available when the SSG feature is enabled. Please read the [Static Site Generation](/guides/advanced-features/ssg) documentation to learn how to enable the SSG feature.
12
+ :::tip Enabling SSG
13
+ This configuration takes effect only when SSG is enabled. Please read the [Static Site Generation](/guides/basic-features/render/ssg) documentation to understand how to enable SSG and its use cases.
14
14
  :::
15
15
 
16
- :::info
17
- For more routes detail, see [Routing](/guides/basic-features/routes).
18
-
16
+ :::info Recommended Reading
17
+ The SSG feature is closely related to routing. It is recommended to understand the [routing solution](/guides/basic-features/routes) before using SSG.
19
18
  :::
20
19
 
21
- ## Example
22
-
23
- ### Single Entry
24
-
25
- When the configuration is set to `true`, the SSG of all entries will be enabled by default.
26
-
27
- For **self-controlled routing**, the root route of the entry will be rendered. For **convention routing**, every route in the entry will be rendered.
28
-
29
- For example, the `src/` directory has the following file structure that satisfies **conventional routing**:
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 Type
43
21
 
44
- Make the following config in `modern.config.[tj]s`:
22
+ When this configuration is set to `true`, the SSG feature will be enabled for all entries by default. For **manual routing**, the root route of the entry will be rendered. For **conventional routing**, each route in the entry will be rendered.
45
23
 
46
- ```ts
24
+ ```js
47
25
  export default defineConfig({
48
26
  output: {
49
27
  ssg: true,
@@ -51,39 +29,20 @@ export default defineConfig({
51
29
  });
52
30
  ```
53
31
 
54
- After executing `pnpm build` to build the application. The `dist/` directory will generate three HTML for each of the three routes (only one HTML if SSG not enabled), and all HTML has been rendered.
55
-
56
- For example the following **self-controlled routing**:
57
-
58
- import SelfRouteExample from "@site-docs/components/self-route-example";
59
-
60
- <SelfRouteExample />
61
-
62
- Also using the above configuration, after executing `pnpm run build`, only the entry route `/` will generate the rendered HTML.
32
+ `output.ssg` can also be configured per entry, with the rules for effective configurations determined by the entry's routing method.
63
33
 
64
- ### Multi Entries
65
-
66
- `output.ssg` can also be configured according to the entries, and the rules that the configuration takes effect are also determined by the entries routing method.
67
-
68
- For example the following directory structure:
34
+ For example, given the following directory structure, there are conventional routing entry `entryA` and manual routing entry `entryB`:
69
35
 
70
36
  ```bash
71
37
  .
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
38
+ └── src
39
+ ├── entryA
40
+ │ └── routes
41
+ └── entryB
42
+ └── App.tsx
84
43
  ```
85
44
 
86
- By default, all entryA entrances are rendered at build time after setting `output.ssg` to `true`. You can configure `false` to cancel the default behavior of the specified entries. For example, to cancel the rendering of the `entryA` at build time:
45
+ You can specify different SSG configurations for `entryA` and `entryB`:
87
46
 
88
47
  ```js
89
48
  export default defineConfig({
@@ -96,107 +55,59 @@ export default defineConfig({
96
55
  });
97
56
  ```
98
57
 
99
- ### Configure Route
100
-
101
- As mentioned above, **Self-Controlled Routing** only enables SSG configuration for entries route by default.
102
-
103
- Set specific routes in `output.ssg` can tell Modern.js to enable the SSG of these client side routes. For example, the content of the above `src/App.tsx` file is:
104
-
105
- <SelfRouteExample />
106
-
107
-
108
- When set like this in `modern.config.[jt]s`, the `/about` route will also enable SSG:
109
-
110
- ```js
111
- export default defineConfig({
112
- output: {
113
- ssg: {
114
- routes: ['/', '/about'],
115
- },
116
- },
117
- });
118
- ```
119
-
120
- Modern.js will automatically concat the complete URL according to the entry and hand it over to the SSG plugin to complete the rendering.
121
-
122
- Request headers can also be configured for specific entries or routes, for example:
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
- The `headers` set in the route override the `headers` set in the entry.
143
-
59
+ For more information on the default behavior of **conventional routing** and **manual routing** after enabling SSG, please read [Static Site Generation](/guides/basic-features/render/ssg).
144
60
  :::
145
61
 
146
- ### Prevent Default
62
+ ## Object Type
147
63
 
148
- By default, **Conventional Routing** all turn on SSG. Modern.js provides another field to prevent the default SSG behavior.
64
+ When the value type is `Object`, the following attributes can be configured.
149
65
 
150
- For example, the following directory structure , `/`、`/user` and `/user/profle` all have SSG enabled:
66
+ ### Configuration Type
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
- You can set this to disable the default behavior of a client-side route:
166
68
 
167
- ```js
168
- export default defineConfig({
169
- output: {
170
- ssg: {
171
- preventDefault: ['/user'],
172
- },
173
- },
174
- });
69
+ ```ts
70
+ type SSGRouteOptions = string | {
71
+ url: string;
72
+ params?: Record<string, any>[];
73
+ headers?: Record<string, any>;
74
+ };
75
+
76
+ type SSGOptions = {
77
+ preventDefault?: string[];
78
+ headers?: Record<string, any>;
79
+ routes?: SSGRouteOptions[];
80
+ };
175
81
  ```
176
82
 
177
- ### Dynamic Params
83
+ ### Example
178
84
 
179
- Some routes may be dynamic, such as the `/user/:id` in a self-controlled route or the route generated by the `user/[id]/page.tsx` file in a conventional route.
85
+ In the example configuration below, SSG will render the pages corresponding to the `/`, `/about`, and `/user/:id` routes.
180
86
 
181
- configure specific parameters in `output.ssg` to render the route of the specified parameters, for example:
87
+ For the `/user/:id` route, `cookies` will be added to the request headers, and the `id` in `params` will be replaced with `modernjs`.
182
88
 
183
- ```js
89
+ ```ts title="modern.config.ts"
184
90
  export default defineConfig({
185
91
  output: {
186
92
  ssg: {
187
93
  routes: [
94
+ '/',
95
+ '/about',
188
96
  {
189
97
  url: '/user/:id',
190
- params: [
191
- {
192
- id: 'modernjs',
193
- },
194
- ],
195
- },
98
+ headers: {
99
+ cookies: "name=modernjs"
100
+ },
101
+ params: [{
102
+ id: 'modernjs',
103
+ }],
104
+ }
196
105
  ],
197
- },
198
- },
106
+ }
107
+ }
199
108
  });
200
109
  ```
201
110
 
202
- The features of dynamic routing and SSG is useful when generating static pages in real time based on CMS system.
111
+ :::note
112
+ The configuration method for multiple entries is the same as for a single entry, so it will not be explained further here.
113
+ :::
@@ -23,7 +23,7 @@ Used to modify the configuration of [Tailwind CSS](https://tailwindcss.com/docs/
23
23
 
24
24
  Before using `tools.tailwindcss`, you need to enable the Tailwind CSS plugin for Modern.js.
25
25
 
26
- Please refer to the section [Using Tailwind CSS](/guides/basic-features/css.html#using-tailwind-css) for instructions on how to enable it.
26
+ Please refer to the section [Using Tailwind CSS](/guides/basic-features/css/tailwindcss) for instructions on how to enable it.
27
27
 
28
28
  ### Function Type
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 @@ Here are the official Rsbuild plugins built into Modern.js:
41
41
  | [CSS Minimizer Plugin](https://github.com/rspack-contrib/rsbuild-plugin-css-minimizer) | Used to customize CSS minimizer, switch to [cssnano](https://cssnano.co/) or other tools for CSS compression | [tools.minifyCss](/configure/app/tools/minify-css.html) |
42
42
  | [Pug Plugin](https://github.com/rspack-contrib/rsbuild-plugin-pug) | Provides support for the Pug template engine | [tools.pug](/configure/app/tools/pug.html) |
43
43
  | [Rem Plugin](https://github.com/rspack-contrib/rsbuild-plugin-rem) | Implements the rem adaptive layout for mobile pages | [output.convertToRem](/configure/app/output/convert-to-rem.html) |
44
- | [YAML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-yaml) | Used to import YAML files and convert them into JavaScript objects | [TOML File](/guides/basic-features/json-files.html#toml-file) |
45
- | [TOML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-toml) | Used to import TOML files and convert them into JavaScript objects | [YAML File](/guides/basic-features/json-files.html#yaml-file) |
44
+ | [YAML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-yaml) | Used to import YAML files and convert them into JavaScript objects | [TOML File](/guides/basic-features/static-assets/json-files.html#toml-file) |
45
+ | [TOML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-toml) | Used to import TOML files and convert them into JavaScript objects | [YAML File](/guides/basic-features/static-assets/json-files.html#yaml-file) |
46
46
 
47
47
  ### Un-builtin Plugins
48
48
 
@@ -8,13 +8,13 @@ import Rspack from '@modern-js/builder-doc/docs/en/shared/rspackTip.mdx';
8
8
 
9
9
  <Rspack />
10
10
 
11
- **Modern.js provides out-of-the-box Rspack support**, so you can switch between the stable Webpack and the faster Rspack.
11
+ **Modern.js provides out-of-the-box Rspack support**, so you can switch between the stable webpack and the faster Rspack.
12
12
 
13
13
  This document will show you how to enable Rspack build mode in Modern.js.
14
14
 
15
15
  ## Initializing an Rspack project
16
16
 
17
- The Modern.js generator provides an interactive question-and-answer interface to initialize a project. To create an Rspack project, simply select the **Rspack** build tool by running:
17
+ The Modern.js new project has enabled Rspack by default. Just execute [Initialize Project](/guides/get-started/quick-start.html#initialize) to create an Rspack project:
18
18
 
19
19
  import InitRspackApp from '@site-docs-en/components/init-rspack-app';
20
20
 
@@ -24,7 +24,7 @@ After the project is created, you can experience the project by running `pnpm ru
24
24
 
25
25
  ## Enable Rspack build
26
26
 
27
- Since Modern.js MAJOR_VERSION.46.0, you can enable Rspack build by add the following configuration in `modern.config.ts`:
27
+ Since Modern.js MAJOR_VERSION.59.0, you can enable Rspack build by add the following configuration in `modern.config.ts`:
28
28
 
29
29
  ```diff title=modern.config.ts
30
30
  import { appTools, defineConfig } from '@modern-js/app-tools';
@@ -32,14 +32,14 @@ import { appTools, defineConfig } from '@modern-js/app-tools';
32
32
  export default defineConfig({
33
33
  plugins: [
34
34
  appTools({
35
- + bundler: 'experimental-rspack',
35
+ + bundler: 'rspack',
36
36
  }),
37
37
  ],
38
38
  });
39
39
  ```
40
40
 
41
41
  :::tip
42
- If your current version is lower than MAJOR_VERSION.46.0, you can upgrade by executing `npx modern upgrade`.
42
+ If your current version is lower than MAJOR_VERSION.59.0, you can upgrade by executing `npx modern upgrade`.
43
43
  :::
44
44
 
45
45
  import RspackPrecautions from '@modern-js/builder-doc/docs/en/shared/rspackPrecautions.md';
@@ -70,12 +70,6 @@ export default {
70
70
  };
71
71
  ```
72
72
 
73
- :::tip
74
- After turning on the Rspack build capability, there are currently a small number of configurations that are not supported in Rspack, such as [source.moduleScopes](/configure/app/source/module-scopes), [security.sri](/configure/app/security/sri) etc.
75
-
76
- For unsupported configurations, we have marked `Bundler: only support webpack` or `Bundler: only support Rspack` in the document. Please refer to the specific configuration introduction.
77
- :::
78
-
79
73
  ## Modify transpile configuration
80
74
 
81
75
  Modern.js uses Rspack [builtin:swc-loader](https://rspack.dev/guide/features/builtin-swc-loader) for code translation in Rspack mode.
@@ -141,9 +135,7 @@ If you need to use the nightly/canary version of Rspack, the package name of the
141
135
  "@rspack/plugin-react-refresh": "npm:@rspack/plugin-react-refresh-canary@nightly"
142
136
  },
143
137
  "peerDependencyRules": {
144
- "allowAny": [
145
- "@rspack/*"
146
- ]
138
+ "allowAny": ["@rspack/*"]
147
139
  }
148
140
  }
149
141
  }
@@ -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
+ # Using CSS-in-JS
2
+
3
+ CSS-in-JS is a technique that allows you to write CSS styles in JS files.
4
+
5
+ Modern.js integrates the popular CSS-in-JS implementation library [styled-components](https://styled-components.com/), which uses the new JavaScript feature [Tagged template](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates) to write component CSS styles. You can directly import the API of [styled-components](https://styled-components.com/) from `@modern-js/runtime/styled` for use.
6
+
7
+ When you need to write a `div` component with an internal font color of red, you can implement it as follows:
8
+
9
+ ```js
10
+ import styled from '@modern-js/runtime/styled';
11
+
12
+ const RedDiv = styled.div`
13
+ color: red;
14
+ `;
15
+ ```
16
+
17
+ If you need to dynamically set component styles based on the component's `props`, for example, the `primary` property of `props` is `true`, the button color is white, otherwise it is red, you can implement the code as follows:
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
+ For more usage of styled-components, please refer to [styled-components official website](https://styled-components.com/).
29
+
30
+ Modern.js integrates Babel's [babel-plugin-styled-components](https://github.com/styled-components/babel-plugin-styled-components) plugin internally, and you can configure the plugin through [tools.styledComponents](/configure/app/tools/styled-components).
31
+
32
+ :::tip
33
+ If you need to use other CSS-in-JS libraries such as [styled-jsx](https://www.npmjs.com/package/styled-jsx) and [Emotion](https://emotion.sh/), you need to install the corresponding dependencies first. For specific usage, please refer to the library's official website.
34
+ :::
@@ -1,7 +1,3 @@
1
- ---
2
- sidebar_position: 14
3
- ---
4
-
5
1
  # Use CSS Modules
6
2
 
7
3
  [CSS Modules](https://github.com/css-modules/css-modules) allows us to write CSS code in a modular way, and these styles can be imported and used in JavaScript files. Using CSS Modules can automatically generate unique class names, isolate styles between different modules, and avoid class name conflicts.
@@ -0,0 +1,25 @@
1
+ ---
2
+ sidebar_position: 1
3
+ ---
4
+
5
+ # Styling
6
+
7
+ Modern.js has built-in a variety of commonly used CSS solutions, including Less / Sass / Stylus preprocessors, PostCSS, CSS Modules, CSS-in-JS, and Tailwind CSS.
8
+
9
+ ## Using Less, Sass and Stylus
10
+
11
+ Modern.js has built-in popular community CSS preprocessors, including Less and Sass.
12
+
13
+ By default, you don't need to configure Less and Sass. If you have custom loader configuration requirements, you can set them up by configuring [tools.less](/configure/app/tools/less) and [tools.sass](/configure/app/tools/sass).
14
+
15
+ You can also use Stylus in Modern.js by installing the Stylus plugin provided by Rsbuild. For usage, please refer to [Stylus Plugin](https://rsbuild.dev/plugins/list/plugin-stylus).
16
+
17
+ ## Using PostCSS
18
+
19
+ Modern.js has built-in [PostCSS](https://postcss.org/) to transform CSS code.
20
+
21
+ Please refer to [Rsbuild - Using PostCSS](https://rsbuild.dev/guide/basic/css-usage#using-postcss) for detailed usage.
22
+
23
+ ## Using Uno CSS
24
+
25
+ Please read the [Rsbuild - Using UnoCSS](https://rsbuild.dev/zh/guide/basic/unocss) for detailed usage.
@@ -1,65 +1,4 @@
1
- ---
2
- sidebar_position: 1
3
- ---
4
-
5
- # Styling
6
-
7
- Modern.js has built-in a variety of commonly used CSS solutions, including Less / Sass / Stylus preprocessors, PostCSS, CSS Modules, CSS-in-JS, and Tailwind CSS.
8
-
9
- ## Using Less, Sass and Stylus
10
-
11
- Modern.js has built-in popular community CSS preprocessors, including Less and Sass.
12
-
13
- By default, you don't need to configure Less and Sass. If you have custom loader configuration requirements, you can set them up by configuring [tools.less](/configure/app/tools/less) and [tools.sass](/configure/app/tools/sass).
14
-
15
- You can also use Stylus in Modern.js by installing the Stylus plugin provided by Rsbuild. For usage, please refer to [Stylus Plugin](https://rsbuild.dev/plugins/list/plugin-stylus).
16
-
17
- ## Using PostCSS
18
-
19
- Modern.js has built-in [PostCSS](https://postcss.org/) to transform CSS code.
20
-
21
- Please refer to [Rsbuild - Using PostCSS](https://rsbuild.dev/guide/basic/css-usage#using-postcss) for detailed usage.
22
-
23
- ## Using CSS Modules
24
-
25
- Please read the [Using CSS Modules](/guides/basic-features/css-modules) section to learn about the complete usage of CSS Modules.
26
-
27
- ## Using CSS-in-JS
28
-
29
- CSS-in-JS is a technique that allows you to write CSS styles in JS files.
30
-
31
- Modern.js integrates the popular CSS-in-JS implementation library [styled-components](https://styled-components.com/), which uses the new JavaScript feature [Tagged template](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates) to write component CSS styles. You can directly import the API of [styled-components](https://styled-components.com/) from `@modern-js/runtime/styled` for use.
32
-
33
- When you need to write a `div` component with an internal font color of red, you can implement it as follows:
34
-
35
- ```js
36
- import styled from '@modern-js/runtime/styled';
37
-
38
- const RedDiv = styled.div`
39
- color: red;
40
- `;
41
- ```
42
-
43
- If you need to dynamically set component styles based on the component's `props`, for example, the `primary` property of `props` is `true`, the button color is white, otherwise it is red, you can implement the code as follows:
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
- For more usage of styled-components, please refer to [styled-components official website](https://styled-components.com/).
55
-
56
- Modern.js integrates Babel's [babel-plugin-styled-components](https://github.com/styled-components/babel-plugin-styled-components) plugin internally, and you can configure the plugin through [tools.styledComponents](/configure/app/tools/styled-components).
57
-
58
- :::tip
59
- If you need to use other CSS-in-JS libraries such as [styled-jsx](https://www.npmjs.com/package/styled-jsx) and [Emotion](https://emotion.sh/), you need to install the corresponding dependencies first. For specific usage, please refer to the library's official website.
60
- :::
61
-
62
- ## Using Tailwind CSS
1
+ # Using Tailwind CSS
63
2
 
64
3
  [Tailwind CSS](https://tailwindcss.com/) is a CSS framework and design system based on Utility Class, which can quickly add common styles to components, and support flexible extension of theme styles.
65
4
 
@@ -112,7 +51,7 @@ const Hello = () => (
112
51
  );
113
52
  ```
114
53
 
115
- ### Configuring Tailwind CSS
54
+ ## Configuring Tailwind CSS
116
55
 
117
56
  In Modern.js, you have two ways to configure Tailwind CSS:
118
57
 
@@ -144,7 +83,7 @@ export default {
144
83
 
145
84
  If you are using both the `tailwind.config.{ts,js}` file and `tools.tailwindcss` option, the configuration defined in `tools.tailwindcss` will take precedence and override the content defined in `tailwind.config.{ts,js}`.
146
85
 
147
- ### Tailwind CSS Autocomplete
86
+ ## Tailwind CSS Autocomplete
148
87
 
149
88
  Tailwind CSS provides an official extension called [Tailwind CSS IntelliSense](https://github.com/tailwindlabs/tailwindcss-intellisense) for autocompletion of Tailwind CSS class names, CSS functions, and directives in VS Code.
150
89
 
@@ -153,7 +92,7 @@ You can follow the steps below to enable the autocomplete feature:
153
92
  1. Install the [Tailwind CSS IntelliSense](https://github.com/tailwindlabs/tailwindcss-intellisense) extension in VS Code.
154
93
  2. If the root directory of your project does not have a `tailwind.config.{ts,js}` file, you need to create one and write the Tailwind CSS configuration for your current project. Otherwise, the IDE plugin will not work correctly.
155
94
 
156
- ### Tailwind CSS Version
95
+ ## Tailwind CSS Version
157
96
 
158
97
  Modern.js supports both Tailwind CSS v2 and v3 versions, and the framework will recognize the version of the `tailwindcss` dependency in the project `package.json` file and enable the corresponding configuration. By default, we will install Tailwind CSS v3 version for you.
159
98
 
@@ -162,7 +101,7 @@ If your project is still using Tailwind CSS v2, we recommend that you upgrade to
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
- ### Browser Compatibility
104
+ ## Browser Compatibility
166
105
 
167
106
  Tailwind CSS v2 and v3 do not support the IE 11 browser, please refer to:
168
107