@modern-js/main-doc 3.0.0-alpha.0 → 3.0.0-alpha.1

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 (142) hide show
  1. package/docs/en/apis/app/commands.mdx +6 -30
  2. package/docs/en/components/bff-upload.mdx +3 -5
  3. package/docs/en/components/bundler.mdx +1 -1
  4. package/docs/en/components/enable-bff.mdx +6 -2
  5. package/docs/en/components/enable-ssg.mdx +1 -0
  6. package/docs/en/components/esbuild.mdx +2 -2
  7. package/docs/en/components/extend-bff-function.mdx +2 -4
  8. package/docs/en/components/hono.mdx +119 -0
  9. package/docs/en/components/international/custom-instance-code.mdx +16 -0
  10. package/docs/en/components/international/init-options-desc.mdx +1 -0
  11. package/docs/en/components/international/install-command.mdx +15 -1
  12. package/docs/en/components/international/instance-code.mdx +26 -0
  13. package/docs/en/configure/app/builder-plugins.mdx +1 -2
  14. package/docs/en/configure/app/dev/server.mdx +108 -0
  15. package/docs/en/configure/app/experiments/source-build.mdx +0 -1
  16. package/docs/en/configure/app/output/assets-retry.mdx +1 -1
  17. package/docs/en/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
  18. package/docs/en/configure/app/output/filename.mdx +2 -4
  19. package/docs/en/configure/app/output/temp-dir.mdx +3 -3
  20. package/docs/en/configure/app/performance/build-cache.mdx +1 -1
  21. package/docs/en/configure/app/performance/profile.mdx +1 -1
  22. package/docs/en/configure/app/plugins.mdx +1 -3
  23. package/docs/en/configure/app/runtime/router.mdx +0 -4
  24. package/docs/en/configure/app/security/sri.mdx +0 -1
  25. package/docs/en/configure/app/source/alias.mdx +1 -1
  26. package/docs/en/configure/app/source/enable-async-entry.mdx +1 -1
  27. package/docs/en/configure/app/source/include.mdx +2 -14
  28. package/docs/en/configure/app/tools/dev-server.mdx +8 -8
  29. package/docs/en/configure/app/usage.mdx +0 -12
  30. package/docs/en/guides/_meta.json +5 -0
  31. package/docs/en/guides/advanced-features/bff/_meta.json +9 -1
  32. package/docs/en/guides/advanced-features/bff/cross-project.mdx +1 -1
  33. package/docs/en/guides/advanced-features/bff/frameworks.mdx +2 -15
  34. package/docs/en/guides/advanced-features/bff/function.mdx +4 -4
  35. package/docs/en/guides/advanced-features/bff/operators.mdx +628 -0
  36. package/docs/en/guides/advanced-features/bff/sdk.mdx +17 -9
  37. package/docs/en/guides/advanced-features/bff/upload.mdx +3 -1
  38. package/docs/en/guides/advanced-features/international/configuration.mdx +7 -16
  39. package/docs/en/guides/advanced-features/international/quick-start.mdx +4 -32
  40. package/docs/en/guides/advanced-features/page-performance/optimize-bundle.mdx +1 -1
  41. package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +18 -4
  42. package/docs/en/guides/advanced-features/rspack-start.mdx +1 -1
  43. package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +62 -5
  44. package/docs/en/guides/basic-features/data/data-cache.mdx +60 -76
  45. package/docs/en/guides/basic-features/data/data-fetch.mdx +15 -14
  46. package/docs/en/guides/basic-features/debug/proxy.mdx +6 -9
  47. package/docs/en/guides/basic-features/render/rsc.mdx +24 -19
  48. package/docs/en/guides/basic-features/render/ssg.mdx +4 -9
  49. package/docs/en/guides/basic-features/render/ssr-cache.mdx +0 -4
  50. package/docs/en/guides/basic-features/static-assets/svg-assets.mdx +0 -4
  51. package/docs/en/guides/get-started/tech-stack.mdx +1 -1
  52. package/docs/en/guides/upgrade/_meta.json +1 -0
  53. package/docs/en/guides/upgrade/config.mdx +936 -0
  54. package/docs/en/guides/upgrade/entry.mdx +463 -0
  55. package/docs/en/guides/upgrade/other.mdx +83 -0
  56. package/docs/en/guides/upgrade/overview.mdx +33 -0
  57. package/docs/en/guides/upgrade/tailwindcss.mdx +130 -0
  58. package/docs/en/guides/upgrade/web-server.mdx +91 -0
  59. package/docs/en/plugin/_meta.json +5 -0
  60. package/docs/en/plugin/cli-plugins/_meta.json +1 -1
  61. package/docs/en/plugin/cli-plugins/api.mdx +13 -63
  62. package/docs/en/plugin/cli-plugins/life-cycle.mdx +0 -4
  63. package/docs/en/plugin/introduction.mdx +8 -20
  64. package/docs/en/plugin/plugin-system.mdx +3 -3
  65. package/docs/en/plugin/runtime-plugins/_meta.json +1 -1
  66. package/docs/en/plugin/runtime-plugins/api.mdx +1 -1
  67. package/docs/en/plugin/server-plugins/_meta.json +1 -0
  68. package/docs/en/plugin/server-plugins/api.mdx +210 -1
  69. package/docs/en/plugin/server-plugins/life-cycle.mdx +41 -1
  70. package/docs/zh/apis/app/commands.mdx +6 -30
  71. package/docs/zh/components/bff-operator-code.mdx +5 -0
  72. package/docs/zh/components/bff-upload.mdx +0 -2
  73. package/docs/zh/components/bundler.mdx +1 -1
  74. package/docs/zh/components/enable-bff.mdx +6 -2
  75. package/docs/zh/components/enable-ssg.mdx +3 -1
  76. package/docs/zh/components/esbuild.mdx +2 -2
  77. package/docs/zh/components/extend-bff-function.mdx +2 -4
  78. package/docs/zh/components/hono.mdx +119 -0
  79. package/docs/zh/components/international/custom-instance-code.mdx +16 -0
  80. package/docs/zh/components/international/init-options-desc.mdx +1 -0
  81. package/docs/zh/components/international/install-command.mdx +15 -0
  82. package/docs/zh/components/international/instance-code.mdx +26 -0
  83. package/docs/zh/configure/app/builder-plugins.mdx +1 -2
  84. package/docs/zh/configure/app/dev/server.mdx +109 -2
  85. package/docs/zh/configure/app/experiments/source-build.mdx +0 -1
  86. package/docs/zh/configure/app/output/assets-retry.mdx +1 -1
  87. package/docs/zh/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
  88. package/docs/zh/configure/app/output/filename.mdx +2 -4
  89. package/docs/zh/configure/app/output/temp-dir.mdx +3 -3
  90. package/docs/zh/configure/app/performance/build-cache.mdx +1 -1
  91. package/docs/zh/configure/app/performance/profile.mdx +1 -1
  92. package/docs/zh/configure/app/plugins.mdx +1 -2
  93. package/docs/zh/configure/app/runtime/router.mdx +0 -4
  94. package/docs/zh/configure/app/security/sri.mdx +0 -1
  95. package/docs/zh/configure/app/source/alias.mdx +1 -1
  96. package/docs/zh/configure/app/source/enable-async-entry.mdx +1 -1
  97. package/docs/zh/configure/app/source/include.mdx +2 -16
  98. package/docs/zh/configure/app/tools/dev-server.mdx +5 -5
  99. package/docs/zh/configure/app/usage.mdx +0 -12
  100. package/docs/zh/guides/advanced-features/bff/_meta.json +9 -1
  101. package/docs/zh/guides/advanced-features/bff/frameworks.mdx +2 -16
  102. package/docs/zh/guides/advanced-features/bff/operators.mdx +628 -0
  103. package/docs/zh/guides/advanced-features/bff/sdk.mdx +19 -12
  104. package/docs/zh/guides/advanced-features/bff/upload.mdx +3 -1
  105. package/docs/zh/guides/advanced-features/international/configuration.mdx +7 -16
  106. package/docs/zh/guides/advanced-features/international/quick-start.mdx +2 -25
  107. package/docs/zh/guides/advanced-features/page-performance/optimize-bundle.mdx +1 -1
  108. package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +18 -4
  109. package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +60 -5
  110. package/docs/zh/guides/basic-features/data/data-cache.mdx +47 -54
  111. package/docs/zh/guides/basic-features/data/data-fetch.mdx +9 -12
  112. package/docs/zh/guides/basic-features/debug/proxy.mdx +4 -7
  113. package/docs/zh/guides/basic-features/render/rsc.mdx +23 -37
  114. package/docs/zh/guides/basic-features/render/ssr-cache.mdx +0 -4
  115. package/docs/zh/guides/basic-features/static-assets/svg-assets.mdx +0 -4
  116. package/docs/zh/guides/get-started/tech-stack.mdx +1 -1
  117. package/docs/zh/guides/troubleshooting/builder.mdx +1 -1
  118. package/docs/zh/guides/upgrade/config.mdx +132 -1
  119. package/docs/zh/plugin/_meta.json +5 -0
  120. package/docs/zh/plugin/cli-plugins/_meta.json +1 -1
  121. package/docs/zh/plugin/cli-plugins/api.mdx +15 -65
  122. package/docs/zh/plugin/cli-plugins/life-cycle.mdx +0 -4
  123. package/docs/zh/plugin/introduction.mdx +4 -16
  124. package/docs/zh/plugin/plugin-system.mdx +3 -14
  125. package/docs/zh/plugin/runtime-plugins/_meta.json +1 -1
  126. package/docs/zh/plugin/runtime-plugins/api.mdx +1 -1
  127. package/docs/zh/plugin/server-plugins/_meta.json +1 -0
  128. package/docs/zh/plugin/server-plugins/api.mdx +210 -1
  129. package/docs/zh/plugin/server-plugins/life-cycle.mdx +41 -1
  130. package/package.json +2 -2
  131. package/src/components/FrameworkCode/index.tsx +605 -0
  132. package/docs/en/configure/app/performance/bundle-analyze.mdx +0 -24
  133. package/docs/en/configure/app/tools/babel.mdx +0 -225
  134. package/docs/en/plugin/cli-plugins/migration.mdx +0 -83
  135. package/docs/en/plugin/runtime-plugins/migration.mdx +0 -110
  136. package/docs/zh/components/default-mwa-generate.mdx +0 -4
  137. package/docs/zh/configure/app/performance/bundle-analyze.mdx +0 -24
  138. package/docs/zh/configure/app/tools/babel.mdx +0 -224
  139. package/docs/zh/plugin/cli-plugins/migration.mdx +0 -83
  140. package/docs/zh/plugin/runtime-plugins/migration.mdx +0 -110
  141. /package/docs/en/components/{router-legacy-tip.mdx → upgrade-config-deploy.mdx} +0 -0
  142. /package/docs/zh/components/{router-legacy-tip.mdx → upgrade-config-deploy.mdx} +0 -0
@@ -0,0 +1,130 @@
1
+ # Tailwind Plugin Changes
2
+
3
+ Modern.js 3.0 recommends integrating Tailwind CSS through Rsbuild's native approach, no longer relying on the `@modern-js/plugin-tailwindcss` plugin, to fully utilize Rsbuild's more flexible configuration capabilities and better build experience.
4
+
5
+ ## Migration Steps
6
+
7
+ The migration operations in this section only need to be performed when the project actually uses the `@modern-js/plugin-tailwindcss` plugin.
8
+
9
+ ### 1. Remove Old Plugin
10
+
11
+ Remove the `@modern-js/plugin-tailwindcss` dependency and configuration.
12
+
13
+ **2.0 Version:**
14
+
15
+ ```ts title="modern.config.ts"
16
+ import { defineConfig } from '@modern-js/app-tools';
17
+ import tailwindcssPlugin from '@modern-js/plugin-tailwindcss';
18
+
19
+ export default defineConfig({
20
+ plugins: [tailwindcssPlugin()],
21
+ });
22
+ ```
23
+
24
+ **3.0 Version:**
25
+
26
+ ```ts title="modern.config.ts"
27
+ import { defineConfig } from '@modern-js/app-tools';
28
+
29
+ export default defineConfig({
30
+ plugins: [],
31
+ });
32
+ ```
33
+
34
+ Also remove the `@modern-js/plugin-tailwindcss` dependency from `package.json`.
35
+
36
+ ### 2. Configure PostCSS
37
+
38
+ Create or update the `postcss.config.cjs` file.
39
+
40
+ ```js title="postcss.config.cjs"
41
+ module.exports = {
42
+ plugins: {
43
+ tailwindcss: {},
44
+ },
45
+ };
46
+ ```
47
+
48
+ ### 3. Tailwind CSS Configuration Migration
49
+
50
+ **Single Configuration Case**:
51
+
52
+ - If only configured in `tailwind.config.{ts,js}`, no additional processing is needed
53
+ - If only configured in `modern.config.ts`, you need to migrate Tailwind-related configurations to `tailwind.config.{ts,js}`
54
+
55
+ **Dual Configuration Case**:
56
+
57
+ If both `tailwind.config.{ts,js}` and `modern.config.ts` have configurations, you need to merge the configurations from both and migrate the merged configuration to `tailwind.config.{ts,js}`.
58
+
59
+ **Special Directory Handling**:
60
+
61
+ If the project has storybook or config/html directories, you need to add them to the `content` in `tailwind.config.{ts,js}`:
62
+
63
+ ```ts title="tailwind.config.ts"
64
+ export default {
65
+ content: [
66
+ './src/**/*.{js,jsx,ts,tsx}',
67
+ './storybook/**/*', // If storybook directory exists
68
+ './config/html/**/*.{html,ejs,hbs}', // If config/html directory exists
69
+ ],
70
+ };
71
+ ```
72
+
73
+ ### 4. CSS Style Import
74
+
75
+ Change the CSS import method to the `@tailwind` directive approach.
76
+
77
+ **2.0 Version:**
78
+
79
+ ```css
80
+ @import 'tailwindcss/base.css';
81
+ @import 'tailwindcss/components.css';
82
+ @import 'tailwindcss/utilities.css';
83
+ ```
84
+
85
+ **3.0 Version:**
86
+
87
+ ```css
88
+ @tailwind base;
89
+ @tailwind components;
90
+ @tailwind utilities;
91
+ ```
92
+
93
+ ### 5. Twin.macro Integration
94
+
95
+ If the project uses twin.macro, you need to configure it manually. If not used, you can skip this step.
96
+
97
+ **Migration Steps**:
98
+
99
+ 1. Manually install dependencies: `pnpm add twin.macro styled-components babel-plugin-macros -D`
100
+ 2. Configure the `babel-plugin-macros` plugin in `modern.config.ts`:
101
+
102
+ ```ts title="modern.config.ts"
103
+ export default defineConfig({
104
+ plugins: [appTools()],
105
+ tools: {
106
+ babel: {
107
+ plugins: [
108
+ [
109
+ 'babel-plugin-macros',
110
+ {
111
+ twin: {
112
+ preset: 'styled-components',
113
+ config: './tailwind.config.ts',
114
+ },
115
+ },
116
+ ],
117
+ ],
118
+ },
119
+ },
120
+ });
121
+ ```
122
+
123
+ ## Tailwind CSS V2 Version Migration
124
+
125
+ If your project still uses Tailwind CSS v2, we recommend upgrading to v3 to support features like JIT. For differences between Tailwind CSS v2 and v3, please refer to:
126
+
127
+ - [Tailwind CSS v3.0](https://tailwindcss.com/blog/tailwindcss-v3)
128
+ - [Upgrade Guide](https://v3.tailwindcss.com/docs/upgrade-guide)
129
+
130
+ Tailwind CSS v2 migration also follows the steps above, but note that the original plugin automatically adapted to differences between Tailwind v2 (`purge` configuration) and v3 (`content` configuration). After removing the plugin, if using v2, you need to use the `purge` configuration item in `tailwind.config.{ts,js}` to specify CSS class names to keep.
@@ -0,0 +1,91 @@
1
+ # Custom Web Server Changes
2
+
3
+ This chapter covers upgrades for two types of legacy custom Server APIs:
4
+
5
+ - **unstableMiddleware**
6
+ - **Hook**
7
+
8
+ These two approaches are mutually exclusive in the legacy version. When migrating, please choose the corresponding path based on the capabilities actually used in the project.
9
+
10
+ ## unstableMiddleware
11
+
12
+ ### Core Differences
13
+
14
+ - **File Structure**: `server/index.ts` → `server/modern.server.ts`
15
+ - **Export Method**: `unstableMiddleware` array → `defineServerConfig`
16
+ - **Context API**: Modern.js Server Context → Hono Context (`c.req`/`c.res`)
17
+ - **Middleware Execution**: Legacy version could skip calling `next()`, new version must call it for subsequent chain execution
18
+ - **Response Method**: `c.response.raw()` → `c.text()` / `c.json()`
19
+
20
+ ### File and Export
21
+
22
+ ```typescript
23
+ // Legacy - server/index.ts
24
+ export const unstableMiddleware: UnstableMiddleware[] = [middleware1, middleware2];
25
+
26
+ // New - server/modern.server.ts
27
+ import { defineServerConfig } from '@modern-js/server-runtime';
28
+
29
+ export default defineServerConfig({
30
+ middlewares: [
31
+ { name: 'middleware1', handler: middleware1 },
32
+ { name: 'middleware2', handler: middleware2 },
33
+ ],
34
+ });
35
+ ```
36
+
37
+ ### Type and next Call
38
+
39
+ ```typescript
40
+ // Legacy
41
+ import type { UnstableMiddleware, UnstableMiddlewareContext } from '@modern-js/server-runtime';
42
+ const middleware: UnstableMiddleware = async (c: UnstableMiddlewareContext, next) => {
43
+ return c.response.raw('response'); // Will continue rendering even without calling next
44
+ };
45
+
46
+ // New
47
+ import { defineServerConfig, type MiddlewareHandler } from '@modern-js/server-runtime';
48
+ const middleware: MiddlewareHandler = async (c, next) => {
49
+ await next(); // Must call
50
+ return c.text('response');
51
+ };
52
+ ```
53
+
54
+ ### Context API Comparison
55
+
56
+ | Legacy API | New API | Description |
57
+ | -------------------- | ---------------------- | ------------- |
58
+ | `c.request.cookie` | `getCookie(c, 'key')` | Cookie reading |
59
+ | `c.req.cookie()` | `getCookie(c, 'key')` | Hono v4 deprecated |
60
+ | `c.request.pathname` | `c.req.path` | Request path |
61
+ | `c.request.host` | `c.req.header('Host')` | Request host |
62
+ | `c.request.query` | `c.req.query()` | Query parameters |
63
+ | `c.request.headers` | `c.req.header()` | Request headers |
64
+ | `c.response.status` | `c.status()` | Response status code |
65
+ | `c.response.set` | `c.res.headers.set` | Set response headers |
66
+ | `c.response.raw` | `c.text` / `c.json` | Response body |
67
+
68
+ ## afterRender Hook
69
+
70
+ `afterRender` is only used for HTML processing after page rendering is complete.
71
+
72
+ ```typescript
73
+ import { defineServerConfig, type MiddlewareHandler } from '@modern-js/server-runtime';
74
+
75
+ const renderMiddleware: MiddlewareHandler = async (c, next) => {
76
+ await next(); // Wait for page rendering first
77
+ const { res } = c;
78
+ const html = await res.text();
79
+
80
+ const modified = html
81
+ .replace('<head>', '<head><meta name="author" content="ByteDance">')
82
+ .replace('<body>', '<body><div id="loading">Loading...</div>')
83
+ .replace('</body>', '<script>console.log("Page loaded")</script></body>');
84
+
85
+ c.res = c.body(modified, { status: res.status, headers: res.headers });
86
+ };
87
+
88
+ export default defineServerConfig({
89
+ renderMiddlewares: [{ name: 'custom-content-injection', handler: renderMiddleware }],
90
+ });
91
+ ```
@@ -11,6 +11,11 @@
11
11
  "name": "runtime-plugins",
12
12
  "label": "runtime-plugins"
13
13
  },
14
+ {
15
+ "type": "dir",
16
+ "name": "server-plugins",
17
+ "label": "server-plugins"
18
+ },
14
19
  {
15
20
  "type": "dir",
16
21
  "name": "official",
@@ -1 +1 @@
1
- ["api", "life-cycle", "migration"]
1
+ ["api", "life-cycle"]
@@ -1,6 +1,6 @@
1
1
  # CLI Plugin API
2
2
 
3
- This document details the API for Modern.js CLI plugins. CLI plugins allow you to extend and customize the functionality of Modern.js projects during the build and development process.
3
+ Modern.js's CLI plugins allow you to extend and customize the functionality of Modern.js projects during the build and development process.
4
4
 
5
5
  :::info
6
6
 
@@ -28,7 +28,8 @@ const myCliPlugin = (): CliPlugin<AppTools> => ({
28
28
  export default myCliPlugin;
29
29
  ```
30
30
 
31
- The `setup` function receives an `api` object, which provides all available CLI plugin APIs.
31
+ - `name`: A unique identifier for the plugin.
32
+ - The `setup` function receives an `api` object, which provides all available CLI plugin APIs.
32
33
 
33
34
  ## Information Retrieval
34
35
 
@@ -190,12 +191,12 @@ api.config(() => {
190
191
 
191
192
  #### `api.modifyBundlerChain`
192
193
 
193
- Modify Webpack or Rspack configuration using the chain API.
194
+ Modify Rspack configuration using the chain API.
194
195
 
195
- - **Type:** `api.modifyBundlerChain(modifyFn: (chain: WebpackChain | RspackChain, utils: WebpackUtils | RspackUtils) => void | Promise<void>)`
196
+ - **Type:** `api.modifyBundlerChain(modifyFn: (chain: RspackChain, utils: RspackUtils) => void | Promise<void>)`
196
197
  - **Parameters:**
197
- - `modifyFn`: A modification function that receives a `webpack-chain` or `RspackChain` instance and utility functions as parameters.
198
- - **Execution Phase:** When generating the final Webpack or Rspack configuration.
198
+ - `modifyFn`: A modification function that receives a `RspackChain` instance and utility functions as parameters.
199
+ - **Execution Phase:** When generating the final Rspack configuration.
199
200
  - **Corresponding Rsbuild Hook:** [modifyBundlerChain](https://rsbuild.rs/en/plugins/dev/hooks#modifybundlerchain)
200
201
  - **Example:**
201
202
 
@@ -250,66 +251,16 @@ api.modifyRspackConfig((config, utils) => {
250
251
 
251
252
  ---
252
253
 
253
- #### `api.modifyWebpackChain`
254
-
255
- Modify the Webpack configuration using [webpack-chain](https://github.com/neutrinojs/webpack-chain) (when using Webpack as the bundler).
256
-
257
- - **Type:** `api.modifyWebpackChain(modifyFn: (chain: WebpackChain, utils: WebpackUtils) => void | Promise<void>)`
258
- - **Parameters:**
259
- - `modifyFn`: A modification function that receives a `webpack-chain` instance and utility functions as parameters.
260
- - **Execution Phase:** When generating the final Webpack configuration.
261
- - **Example:**
254
+ **Build Configuration Modification Order**
262
255
 
263
- ```typescript
264
- api.modifyWebpackChain((chain, utils) => {
265
- // Add a custom Webpack loader
266
- chain.module
267
- .rule('my-loader')
268
- .test(/\.my-ext$/)
269
- .use('my-loader')
270
- .loader(require.resolve('./my-loader'));
271
- });
272
256
  ```
273
-
274
- ---
275
-
276
- #### `api.modifyWebpackConfig`
277
-
278
- Directly modify the Webpack configuration object (when using Webpack as the bundler).
279
-
280
- - **Type:** `api.modifyWebpackConfig(modifyFn: (config: WebpackConfig, utils: WebpackUtils) => WebpackConfig | Promise<WebpackConfig> | void)`
281
- - **Parameters:**
282
- - `modifyFn`: A modification function that receives the Webpack configuration object and utility functions as parameters. It can return the modified configuration object, a Promise, or nothing (modifying the original object directly).
283
- - **Execution Phase:** When generating the final Webpack configuration.
284
- - **Example:**
285
-
286
- ```typescript
287
- api.modifyWebpackConfig((config, utils) => {
288
- // Disable source map
289
- config.devtool = false;
290
- });
257
+ modifyRsbuildConfig
258
+ modifyBundlerChain
259
+ tools.bundlerChain
260
+ modifyRspackConfig
261
+ tools.rspack
291
262
  ```
292
263
 
293
- **Build Configuration Modification Order**
294
-
295
- - **Building with Rspack:**
296
- ```
297
- modifyRsbuildConfig
298
- modifyBundlerChain
299
- tools.bundlerChain
300
- modifyRspackConfig
301
- tools.rspack
302
- ```
303
- - **Building with Webpack:**
304
- ```
305
- modifyBundlerChain
306
- tools.bundlerChain
307
- modifyWebpackChain
308
- tools.webpackChain
309
- modifyWebpackConfig
310
- tools.webpack
311
- ```
312
-
313
264
  ---
314
265
 
315
266
  #### `api.modifyServerRoutes`
@@ -625,4 +576,3 @@ api.onBeforePrintInstructions(({ instructions }) => {
625
576
  ## Other Notes
626
577
 
627
578
  - Refer to [CLI Plugin Lifecycle](./life-cycle.mdx) to understand the execution order of plugin hooks.
628
- - Refer to [CLI Plugin Migration Guide](./migration.mdx) to learn how to migrate from the old version of plugins to the new version.
@@ -36,8 +36,6 @@ flowchart TD
36
36
  modifyBundlerChain(modifyBundlerChain)
37
37
  modifyRsbuildConfig(modifyRsbuildConfig)
38
38
  modifyRspackConfig(modifyRspackConfig)
39
- modifyWebpackChain(modifyWebpackChain)
40
- modifyWebpackConfig(modifyWebpackConfig)
41
39
 
42
40
  onBeforeBuild_rsbuild(onBeforeBuild)
43
41
  onAfterBuild_rsbuild(onAfterBuild)
@@ -63,8 +61,6 @@ flowchart TD
63
61
  registry_rsbuild_hooks --> modifyBundlerChain
64
62
  modifyBundlerChain --> modifyRsbuildConfig
65
63
  modifyRsbuildConfig --> modifyRspackConfig
66
- modifyRspackConfig --> modifyWebpackChain
67
- modifyWebpackChain --> modifyWebpackConfig
68
64
  registry_rsbuild_hooks --> onBeforeBuild_rsbuild
69
65
  onBeforeBuild_rsbuild --> onAfterBuild_rsbuild
70
66
  onAfterBuild_rsbuild --> onDevCompileDone
@@ -18,9 +18,9 @@ Without a plugin system, these requirements might require modifying the framewor
18
18
 
19
19
  Modern.js offers two main types of plugins: Modern.js framework plugins and Rsbuild build plugins. The choice of which plugin to use depends on your specific needs:
20
20
 
21
- - **Rsbuild Build Plugins:** If your needs are closely related to the build process, especially involving modifications to Webpack or Rspack configuration, then you should choose an Rsbuild plugin. For example:
21
+ - **Rsbuild Build Plugins:** If your needs are closely related to the build process, especially involving modifications to Rspack configuration, then you should choose an Rsbuild plugin. For example:
22
22
 
23
- - Modifying Webpack/Rspack `loader` or `plugin` configurations.
23
+ - Modifying Rspack `loader` or `plugin` configurations.
24
24
  - Handling new file types.
25
25
  - Modifying or compiling file contents.
26
26
  - Optimizing or processing build artifacts.
@@ -31,7 +31,7 @@ Modern.js offers two main types of plugins: Modern.js framework plugins and Rsbu
31
31
  - Customizing the application's rendering process (e.g., SSR).
32
32
  - Adding server-side middleware or handler functions.
33
33
 
34
- In short, use Rsbuild plugins when you need to modify Webpack/Rspack configurations; use Modern.js plugins for other framework-related extensions.
34
+ In short, use Rsbuild plugins when you need to modify Rspack configurations; use Modern.js plugins for other framework-related extensions.
35
35
 
36
36
  ## Modern.js Framework Plugins
37
37
 
@@ -101,12 +101,6 @@ export default defineServerConfig({
101
101
  });
102
102
  ```
103
103
 
104
- :::tip
105
- Modern.js officially uses the new plugin mechanism starting from `MAJOR_VERSION.66.0`.
106
-
107
- If your current version is lower than MAJOR_VERSION.66.0, you can upgrade by running `npx modern upgrade`.
108
- :::
109
-
110
104
  ### Developing Plugins
111
105
 
112
106
  If you need to develop Modern.js framework plugins, please read [Modern.js Plugin System](/plugin/plugin-system) for more information.
@@ -122,12 +116,6 @@ Rsbuild is the underlying build tool for Modern.js. By adding Rsbuild plugins, y
122
116
 
123
117
  You can register Rsbuild plugins in `modern.config.ts` via the `builderPlugins` option. See [builderPlugins](/configure/app/builder-plugins.html) for details.
124
118
 
125
- :::tip
126
- Starting from `MAJOR_VERSION.46.0`, Modern.js upgraded its underlying build tool to [Rsbuild](https://rsbuild.rs/).
127
-
128
- If your current version is lower than MAJOR_VERSION.46.0, you can upgrade by running `npx modern upgrade`.
129
- :::
130
-
131
119
  :::info
132
120
  You can read [Rsbuild Official Website - Plugins](https://rsbuild.rs/plugins/list/index) to learn more about the Rsbuild plugin system.
133
121
  :::
@@ -140,9 +128,9 @@ The following are official Rsbuild plugins that are already built into Modern.js
140
128
 
141
129
  | Plugin | Description | Modern.js Link |
142
130
  | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
143
- | [React Plugin](https://rsbuild.rs/zh/plugins/list/plugin-react) | Provides support for React | - |
144
- | [SVGR Plugin](https://rsbuild.rs/zh/plugins/list/plugin-svgr) | Supports converting SVG images into React components | [output.disableSvgr](/configure/app/output/disable-svgr)<br />[output.svgDefaultExport](/configure/app/output/svg-default-export) |
145
- | [Assets Retry Plugin](https://rsbuild.rs/zh/plugins/list/plugin-assets-retry) | Automatically retries requests when static asset loading fails | [output.assetsRetry](/configure/app/output/assets-retry.html) |
131
+ | [React Plugin](https://rsbuild.rs/plugins/list/plugin-react) | Provides support for React | - |
132
+ | [SVGR Plugin](https://rsbuild.rs/plugins/list/plugin-svgr) | Supports converting SVG images into React components | [output.disableSvgr](/configure/app/output/disable-svgr)<br />[output.svgDefaultExport](/configure/app/output/svg-default-export) |
133
+ | [Assets Retry Plugin](https://rsbuild.rs/plugins/list/plugin-assets-retry) | Automatically retries requests when static asset loading fails | [output.assetsRetry](/configure/app/output/assets-retry.html) |
146
134
  | [Type Check Plugin](https://github.com/rspack-contrib/rsbuild-plugin-type-check) | Runs TypeScript type checking in a separate process | [output.disableTsChecker](/configure/app/output/disable-ts-checker.html)<br />[tools.tsChecker](/configure/app/tools/ts-checker.html) |
147
135
  | [Source Build Plugin](https://github.com/rspack-contrib/rsbuild-plugin-source-build) | For monorepo scenarios, supports referencing source code from other subdirectories and completing builds and hot updates | [experiments.sourceBuild](/configure/app/experiments/source-build.html) |
148
136
  | [Check Syntax Plugin](https://github.com/rspack-contrib/rsbuild-plugin-check-syntax) | Analyzes the syntax compatibility of the build artifacts to determine if there are any advanced syntax features that cause compatibility issues | [security.checkSyntax](/configure/app/security/check-syntax.html) |
@@ -154,7 +142,7 @@ The following are official Rsbuild plugins that are already built into Modern.js
154
142
  The following are official Rsbuild plugins that are not built into Modern.js:
155
143
 
156
144
  - [Image Compress Plugin](https://github.com/rspack-contrib/rsbuild-plugin-image-compress): Compresses image resources used in the project.
157
- - [Stylus Plugin](https://rsbuild.rs/zh/plugins/list/plugin-stylus): Uses Stylus as the CSS preprocessor.
145
+ - [Stylus Plugin](https://rsbuild.rs/plugins/list/plugin-stylus): Uses Stylus as the CSS preprocessor.
158
146
  - [UMD Plugin](https://github.com/rspack-contrib/rsbuild-plugin-umd): Used to build UMD format artifacts.
159
147
  - [YAML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-yaml): Used to reference YAML files and convert them to JavaScript objects.
160
148
  - [TOML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-toml): Used to reference TOML files and convert them to JavaScript objects.
@@ -162,4 +150,4 @@ The following are official Rsbuild plugins that are not built into Modern.js:
162
150
  import OtherPlugins from '@site-docs-en/components/other-plugins.mdx';
163
151
 
164
152
  <OtherPlugins />
165
- ````
153
+ ```
@@ -59,12 +59,12 @@ const myPlugin: Plugin = {
59
59
  usePlugins: [], // List of plugin instances used internally, defaults to an empty array
60
60
 
61
61
  // Register new Hooks (optional)
62
- registryHook: {},
62
+ registryHooks: {},
63
63
 
64
64
  // The entry function of the plugin (required)
65
65
  setup(api) {
66
66
  // The core logic of the plugin, calling plugin APIs through the api object
67
- api.modifyWebpackConfig(config => {
67
+ api.modifyRspackConfig(config => {
68
68
  /* ... */
69
69
  });
70
70
  api.onPrepare(() => {
@@ -221,7 +221,7 @@ const myPlugin = () => ({
221
221
  const myPlugin2 = () => ({
222
222
  name: 'my-plugin',
223
223
  setup: api => {
224
- api.modifyRoutes(async routes => {
224
+ api.modifyRoutes(routes => {
225
225
  // Modify routes
226
226
  return routes;
227
227
  });
@@ -1 +1 @@
1
- ["api", "life-cycle", "migration"]
1
+ ["api", "life-cycle"]
@@ -37,7 +37,7 @@ export default myRuntimePlugin;
37
37
  ```
38
38
 
39
39
  - `name`: A unique identifier for the plugin.
40
- - `setup`: The main logic of the plugin, which receives an `api` object as a parameter. This `api` object is used to register hooks.
40
+ - `setup`: A function that receives an `api` object, which provides all available Runtime plugin APIs.
41
41
 
42
42
  ## API Overview
43
43
 
@@ -0,0 +1 @@
1
+ ["api", "life-cycle"]