@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.
- package/docs/en/apis/app/commands.mdx +6 -30
- package/docs/en/components/bff-upload.mdx +3 -5
- package/docs/en/components/bundler.mdx +1 -1
- package/docs/en/components/enable-bff.mdx +6 -2
- package/docs/en/components/enable-ssg.mdx +1 -0
- package/docs/en/components/esbuild.mdx +2 -2
- package/docs/en/components/extend-bff-function.mdx +2 -4
- package/docs/en/components/hono.mdx +119 -0
- package/docs/en/components/international/custom-instance-code.mdx +16 -0
- package/docs/en/components/international/init-options-desc.mdx +1 -0
- package/docs/en/components/international/install-command.mdx +15 -1
- package/docs/en/components/international/instance-code.mdx +26 -0
- package/docs/en/configure/app/builder-plugins.mdx +1 -2
- package/docs/en/configure/app/dev/server.mdx +108 -0
- package/docs/en/configure/app/experiments/source-build.mdx +0 -1
- package/docs/en/configure/app/output/assets-retry.mdx +1 -1
- package/docs/en/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
- package/docs/en/configure/app/output/filename.mdx +2 -4
- package/docs/en/configure/app/output/temp-dir.mdx +3 -3
- package/docs/en/configure/app/performance/build-cache.mdx +1 -1
- package/docs/en/configure/app/performance/profile.mdx +1 -1
- package/docs/en/configure/app/plugins.mdx +1 -3
- package/docs/en/configure/app/runtime/router.mdx +0 -4
- package/docs/en/configure/app/security/sri.mdx +0 -1
- package/docs/en/configure/app/source/alias.mdx +1 -1
- package/docs/en/configure/app/source/enable-async-entry.mdx +1 -1
- package/docs/en/configure/app/source/include.mdx +2 -14
- package/docs/en/configure/app/tools/dev-server.mdx +8 -8
- package/docs/en/configure/app/usage.mdx +0 -12
- package/docs/en/guides/_meta.json +5 -0
- package/docs/en/guides/advanced-features/bff/_meta.json +9 -1
- package/docs/en/guides/advanced-features/bff/cross-project.mdx +1 -1
- package/docs/en/guides/advanced-features/bff/frameworks.mdx +2 -15
- package/docs/en/guides/advanced-features/bff/function.mdx +4 -4
- package/docs/en/guides/advanced-features/bff/operators.mdx +628 -0
- package/docs/en/guides/advanced-features/bff/sdk.mdx +17 -9
- package/docs/en/guides/advanced-features/bff/upload.mdx +3 -1
- package/docs/en/guides/advanced-features/international/configuration.mdx +7 -16
- package/docs/en/guides/advanced-features/international/quick-start.mdx +4 -32
- package/docs/en/guides/advanced-features/page-performance/optimize-bundle.mdx +1 -1
- package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +18 -4
- package/docs/en/guides/advanced-features/rspack-start.mdx +1 -1
- package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +62 -5
- package/docs/en/guides/basic-features/data/data-cache.mdx +60 -76
- package/docs/en/guides/basic-features/data/data-fetch.mdx +15 -14
- package/docs/en/guides/basic-features/debug/proxy.mdx +6 -9
- package/docs/en/guides/basic-features/render/rsc.mdx +24 -19
- package/docs/en/guides/basic-features/render/ssg.mdx +4 -9
- package/docs/en/guides/basic-features/render/ssr-cache.mdx +0 -4
- package/docs/en/guides/basic-features/static-assets/svg-assets.mdx +0 -4
- package/docs/en/guides/get-started/tech-stack.mdx +1 -1
- package/docs/en/guides/upgrade/_meta.json +1 -0
- package/docs/en/guides/upgrade/config.mdx +936 -0
- package/docs/en/guides/upgrade/entry.mdx +463 -0
- package/docs/en/guides/upgrade/other.mdx +83 -0
- package/docs/en/guides/upgrade/overview.mdx +33 -0
- package/docs/en/guides/upgrade/tailwindcss.mdx +130 -0
- package/docs/en/guides/upgrade/web-server.mdx +91 -0
- package/docs/en/plugin/_meta.json +5 -0
- package/docs/en/plugin/cli-plugins/_meta.json +1 -1
- package/docs/en/plugin/cli-plugins/api.mdx +13 -63
- package/docs/en/plugin/cli-plugins/life-cycle.mdx +0 -4
- package/docs/en/plugin/introduction.mdx +8 -20
- package/docs/en/plugin/plugin-system.mdx +3 -3
- package/docs/en/plugin/runtime-plugins/_meta.json +1 -1
- package/docs/en/plugin/runtime-plugins/api.mdx +1 -1
- package/docs/en/plugin/server-plugins/_meta.json +1 -0
- package/docs/en/plugin/server-plugins/api.mdx +210 -1
- package/docs/en/plugin/server-plugins/life-cycle.mdx +41 -1
- package/docs/zh/apis/app/commands.mdx +6 -30
- package/docs/zh/components/bff-operator-code.mdx +5 -0
- package/docs/zh/components/bff-upload.mdx +0 -2
- package/docs/zh/components/bundler.mdx +1 -1
- package/docs/zh/components/enable-bff.mdx +6 -2
- package/docs/zh/components/enable-ssg.mdx +3 -1
- package/docs/zh/components/esbuild.mdx +2 -2
- package/docs/zh/components/extend-bff-function.mdx +2 -4
- package/docs/zh/components/hono.mdx +119 -0
- package/docs/zh/components/international/custom-instance-code.mdx +16 -0
- package/docs/zh/components/international/init-options-desc.mdx +1 -0
- package/docs/zh/components/international/install-command.mdx +15 -0
- package/docs/zh/components/international/instance-code.mdx +26 -0
- package/docs/zh/configure/app/builder-plugins.mdx +1 -2
- package/docs/zh/configure/app/dev/server.mdx +109 -2
- package/docs/zh/configure/app/experiments/source-build.mdx +0 -1
- package/docs/zh/configure/app/output/assets-retry.mdx +1 -1
- package/docs/zh/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
- package/docs/zh/configure/app/output/filename.mdx +2 -4
- package/docs/zh/configure/app/output/temp-dir.mdx +3 -3
- package/docs/zh/configure/app/performance/build-cache.mdx +1 -1
- package/docs/zh/configure/app/performance/profile.mdx +1 -1
- package/docs/zh/configure/app/plugins.mdx +1 -2
- package/docs/zh/configure/app/runtime/router.mdx +0 -4
- package/docs/zh/configure/app/security/sri.mdx +0 -1
- package/docs/zh/configure/app/source/alias.mdx +1 -1
- package/docs/zh/configure/app/source/enable-async-entry.mdx +1 -1
- package/docs/zh/configure/app/source/include.mdx +2 -16
- package/docs/zh/configure/app/tools/dev-server.mdx +5 -5
- package/docs/zh/configure/app/usage.mdx +0 -12
- package/docs/zh/guides/advanced-features/bff/_meta.json +9 -1
- package/docs/zh/guides/advanced-features/bff/frameworks.mdx +2 -16
- package/docs/zh/guides/advanced-features/bff/operators.mdx +628 -0
- package/docs/zh/guides/advanced-features/bff/sdk.mdx +19 -12
- package/docs/zh/guides/advanced-features/bff/upload.mdx +3 -1
- package/docs/zh/guides/advanced-features/international/configuration.mdx +7 -16
- package/docs/zh/guides/advanced-features/international/quick-start.mdx +2 -25
- package/docs/zh/guides/advanced-features/page-performance/optimize-bundle.mdx +1 -1
- package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +18 -4
- package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +60 -5
- package/docs/zh/guides/basic-features/data/data-cache.mdx +47 -54
- package/docs/zh/guides/basic-features/data/data-fetch.mdx +9 -12
- package/docs/zh/guides/basic-features/debug/proxy.mdx +4 -7
- package/docs/zh/guides/basic-features/render/rsc.mdx +23 -37
- package/docs/zh/guides/basic-features/render/ssr-cache.mdx +0 -4
- package/docs/zh/guides/basic-features/static-assets/svg-assets.mdx +0 -4
- package/docs/zh/guides/get-started/tech-stack.mdx +1 -1
- package/docs/zh/guides/troubleshooting/builder.mdx +1 -1
- package/docs/zh/guides/upgrade/config.mdx +132 -1
- package/docs/zh/plugin/_meta.json +5 -0
- package/docs/zh/plugin/cli-plugins/_meta.json +1 -1
- package/docs/zh/plugin/cli-plugins/api.mdx +15 -65
- package/docs/zh/plugin/cli-plugins/life-cycle.mdx +0 -4
- package/docs/zh/plugin/introduction.mdx +4 -16
- package/docs/zh/plugin/plugin-system.mdx +3 -14
- package/docs/zh/plugin/runtime-plugins/_meta.json +1 -1
- package/docs/zh/plugin/runtime-plugins/api.mdx +1 -1
- package/docs/zh/plugin/server-plugins/_meta.json +1 -0
- package/docs/zh/plugin/server-plugins/api.mdx +210 -1
- package/docs/zh/plugin/server-plugins/life-cycle.mdx +41 -1
- package/package.json +2 -2
- package/src/components/FrameworkCode/index.tsx +605 -0
- package/docs/en/configure/app/performance/bundle-analyze.mdx +0 -24
- package/docs/en/configure/app/tools/babel.mdx +0 -225
- package/docs/en/plugin/cli-plugins/migration.mdx +0 -83
- package/docs/en/plugin/runtime-plugins/migration.mdx +0 -110
- package/docs/zh/components/default-mwa-generate.mdx +0 -4
- package/docs/zh/configure/app/performance/bundle-analyze.mdx +0 -24
- package/docs/zh/configure/app/tools/babel.mdx +0 -224
- package/docs/zh/plugin/cli-plugins/migration.mdx +0 -83
- package/docs/zh/plugin/runtime-plugins/migration.mdx +0 -110
- /package/docs/en/components/{router-legacy-tip.mdx → upgrade-config-deploy.mdx} +0 -0
- /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
|
+
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
["api", "life-cycle"
|
|
1
|
+
["api", "life-cycle"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CLI Plugin API
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
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
|
|
194
|
+
Modify Rspack configuration using the chain API.
|
|
194
195
|
|
|
195
|
-
- **Type:** `api.modifyBundlerChain(modifyFn: (chain:
|
|
196
|
+
- **Type:** `api.modifyBundlerChain(modifyFn: (chain: RspackChain, utils: RspackUtils) => void | Promise<void>)`
|
|
196
197
|
- **Parameters:**
|
|
197
|
-
- `modifyFn`: A modification function that receives a `
|
|
198
|
-
- **Execution Phase:** When generating the final
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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/
|
|
144
|
-
| [SVGR Plugin](https://rsbuild.rs/
|
|
145
|
-
| [Assets Retry Plugin](https://rsbuild.rs/
|
|
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/
|
|
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
|
-
|
|
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.
|
|
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(
|
|
224
|
+
api.modifyRoutes(routes => {
|
|
225
225
|
// Modify routes
|
|
226
226
|
return routes;
|
|
227
227
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
["api", "life-cycle"
|
|
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`:
|
|
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"]
|