@modern-js/app-tools 3.7.0 → 3.8.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/bin/modern-bundle-docs.js +7 -0
- package/dist/cjs/builder/generator/createBuilderProviderConfig.js +5 -1
- package/dist/cjs/bundleDocs.js +114 -0
- package/dist/cjs/commands/build.js +2 -1
- package/dist/cjs/commands/deploy.js +4 -2
- package/dist/cjs/commands/index.js +0 -4
- package/dist/cjs/config/default.js +2 -0
- package/dist/cjs/index.js +52 -14
- package/dist/cjs/plugins/analyze/index.js +2 -2
- package/dist/cjs/plugins/analyze/utils.js +3 -2
- package/dist/cjs/plugins/initialize/index.js +4 -3
- package/dist/cjs/plugins/serverBuild.js +3 -2
- package/dist/esm/builder/generator/createBuilderProviderConfig.mjs +5 -1
- package/dist/esm/bundleDocs.mjs +62 -0
- package/dist/esm/commands/build.mjs +2 -1
- package/dist/esm/commands/deploy.mjs +4 -2
- package/dist/esm/commands/index.mjs +0 -4
- package/dist/esm/config/default.mjs +2 -0
- package/dist/esm/index.mjs +15 -1
- package/dist/esm/plugins/analyze/index.mjs +2 -2
- package/dist/esm/plugins/analyze/utils.mjs +3 -2
- package/dist/esm/plugins/initialize/index.mjs +4 -3
- package/dist/esm/plugins/serverBuild.mjs +3 -2
- package/dist/esm-node/builder/generator/createBuilderProviderConfig.mjs +5 -1
- package/dist/esm-node/bundleDocs.mjs +63 -0
- package/dist/esm-node/commands/build.mjs +2 -1
- package/dist/esm-node/commands/deploy.mjs +4 -2
- package/dist/esm-node/commands/index.mjs +0 -4
- package/dist/esm-node/config/default.mjs +2 -0
- package/dist/esm-node/index.mjs +15 -1
- package/dist/esm-node/plugins/analyze/index.mjs +2 -2
- package/dist/esm-node/plugins/analyze/utils.mjs +3 -2
- package/dist/esm-node/plugins/initialize/index.mjs +4 -3
- package/dist/esm-node/plugins/serverBuild.mjs +3 -2
- package/dist/types/bundleDocs.d.ts +20 -0
- package/dist/types/commands/deploy.d.ts +2 -1
- package/dist/types/index.d.ts +4 -1
- package/dist/types/plugins/analyze/utils.d.ts +1 -1
- package/dist/types/types/config/dev.d.ts +6 -0
- package/docs/apis/app/commands.md +241 -0
- package/docs/apis/app/hooks/api/lambda.md +9 -0
- package/docs/apis/app/hooks/config/favicon.md +24 -0
- package/docs/apis/app/hooks/config/html.md +5 -0
- package/docs/apis/app/hooks/config/icon.md +24 -0
- package/docs/apis/app/hooks/config/mock.md +6 -0
- package/docs/apis/app/hooks/config/public.md +26 -0
- package/docs/apis/app/hooks/config/upload.md +50 -0
- package/docs/apis/app/hooks/modern-config.md +5 -0
- package/docs/apis/app/hooks/server/server.md +5 -0
- package/docs/apis/app/hooks/shared.md +3 -0
- package/docs/apis/app/hooks/src/app.md +30 -0
- package/docs/apis/app/hooks/src/entry.md +34 -0
- package/docs/apis/app/hooks/src/entry.server.md +51 -0
- package/docs/apis/app/hooks/src/modern.runtime.md +5 -0
- package/docs/apis/app/hooks/src/routes.md +86 -0
- package/docs/apis/app/hooks/src/server.md +3 -0
- package/docs/apis/app/runtime/bff/use-hono-context.md +27 -0
- package/docs/apis/app/runtime/core/create-root.md +19 -0
- package/docs/apis/app/runtime/core/render.md +39 -0
- package/docs/apis/app/runtime/core/runtime-context.md +156 -0
- package/docs/apis/app/runtime/router/router.md +280 -0
- package/docs/apis/app/runtime/ssr/no-ssr.md +35 -0
- package/docs/apis/app/runtime/ssr/renderStreaming.md +67 -0
- package/docs/apis/app/runtime/ssr/renderString.md +60 -0
- package/docs/apis/app/runtime/ssr/requestHandler.md +44 -0
- package/docs/apis/app/runtime/utility/css-in-js.md +40 -0
- package/docs/apis/app/runtime/utility/head.md +35 -0
- package/docs/apis/app/runtime/utility/loadable.md +82 -0
- package/docs/community/blog/2022-0708-updates.md +91 -0
- package/docs/community/blog/2022-0910-updates.md +76 -0
- package/docs/community/blog/overview.md +63 -0
- package/docs/community/blog/v2-release-note.md +238 -0
- package/docs/community/blog/v3-release-note.md +622 -0
- package/docs/community/contributing-guide.md +253 -0
- package/docs/community/releases.md +27 -0
- package/docs/community/showcase.md +34 -0
- package/docs/community/team.md +14 -0
- package/docs/configure/app/bff/cross-project.md +20 -0
- package/docs/configure/app/bff/prefix.md +29 -0
- package/docs/configure/app/builder-plugins.md +66 -0
- package/docs/configure/app/dev/asset-prefix.md +13 -0
- package/docs/configure/app/dev/before-start-url.md +17 -0
- package/docs/configure/app/dev/client.md +41 -0
- package/docs/configure/app/dev/hmr.md +10 -0
- package/docs/configure/app/dev/host.md +18 -0
- package/docs/configure/app/dev/https.md +77 -0
- package/docs/configure/app/dev/lazy-compilation.md +39 -0
- package/docs/configure/app/dev/live-reload.md +10 -0
- package/docs/configure/app/dev/mock-dir.md +31 -0
- package/docs/configure/app/dev/progress-bar.md +19 -0
- package/docs/configure/app/dev/server.md +124 -0
- package/docs/configure/app/dev/setup-middlewares.md +32 -0
- package/docs/configure/app/dev/start-url.md +48 -0
- package/docs/configure/app/dev/watch-files.md +27 -0
- package/docs/configure/app/dev/write-to-disk.md +10 -0
- package/docs/configure/app/experiments/source-build.md +31 -0
- package/docs/configure/app/html/app-icon.md +28 -0
- package/docs/configure/app/html/crossorigin.md +10 -0
- package/docs/configure/app/html/favicon.md +16 -0
- package/docs/configure/app/html/inject.md +10 -0
- package/docs/configure/app/html/meta.md +24 -0
- package/docs/configure/app/html/mount-id.md +10 -0
- package/docs/configure/app/html/output-structure.md +10 -0
- package/docs/configure/app/html/script-loading.md +10 -0
- package/docs/configure/app/html/tags.md +15 -0
- package/docs/configure/app/html/template-parameters.md +33 -0
- package/docs/configure/app/html/template.md +10 -0
- package/docs/configure/app/html/title.md +18 -0
- package/docs/configure/app/output/asset-prefix.md +11 -0
- package/docs/configure/app/output/assets-retry.md +77 -0
- package/docs/configure/app/output/charset.md +10 -0
- package/docs/configure/app/output/clean-dist-path.md +16 -0
- package/docs/configure/app/output/convert-to-rem.md +79 -0
- package/docs/configure/app/output/copy.md +10 -0
- package/docs/configure/app/output/css-modules.md +48 -0
- package/docs/configure/app/output/data-uri-limit.md +26 -0
- package/docs/configure/app/output/disable-css-module-extension.md +55 -0
- package/docs/configure/app/output/disable-inline-runtime-chunk.md +41 -0
- package/docs/configure/app/output/disable-svgr.md +16 -0
- package/docs/configure/app/output/disable-ts-checker.md +49 -0
- package/docs/configure/app/output/dist-path.md +43 -0
- package/docs/configure/app/output/enable-asset-manifest.md +36 -0
- package/docs/configure/app/output/enable-css-module-tsdeclaration.md +28 -0
- package/docs/configure/app/output/enable-inline-route-manifests.md +16 -0
- package/docs/configure/app/output/externals.md +20 -0
- package/docs/configure/app/output/filename-hash.md +10 -0
- package/docs/configure/app/output/filename.md +55 -0
- package/docs/configure/app/output/inject-styles.md +10 -0
- package/docs/configure/app/output/inline-scripts.md +29 -0
- package/docs/configure/app/output/inline-styles.md +29 -0
- package/docs/configure/app/output/legal-comments.md +18 -0
- package/docs/configure/app/output/minify.md +22 -0
- package/docs/configure/app/output/override-browserslist.md +22 -0
- package/docs/configure/app/output/polyfill.md +12 -0
- package/docs/configure/app/output/source-map.md +30 -0
- package/docs/configure/app/output/split-route-chunks.md +16 -0
- package/docs/configure/app/output/ssg.md +81 -0
- package/docs/configure/app/output/ssgByEntries.md +90 -0
- package/docs/configure/app/output/svg-default-export.md +30 -0
- package/docs/configure/app/output/temp-dir.md +20 -0
- package/docs/configure/app/performance/build-cache.md +39 -0
- package/docs/configure/app/performance/chunk-split.md +40 -0
- package/docs/configure/app/performance/dns-prefetch.md +15 -0
- package/docs/configure/app/performance/preconnect.md +16 -0
- package/docs/configure/app/performance/prefetch.md +21 -0
- package/docs/configure/app/performance/preload.md +23 -0
- package/docs/configure/app/performance/print-file-size.md +40 -0
- package/docs/configure/app/performance/profile.md +10 -0
- package/docs/configure/app/performance/remove-console.md +10 -0
- package/docs/configure/app/performance/remove-moment-locale.md +10 -0
- package/docs/configure/app/plugins.md +59 -0
- package/docs/configure/app/resolve/alias-strategy.md +10 -0
- package/docs/configure/app/resolve/alias.md +9 -0
- package/docs/configure/app/resolve/condition-names.md +13 -0
- package/docs/configure/app/resolve/dedupe.md +9 -0
- package/docs/configure/app/resolve/extensions.md +13 -0
- package/docs/configure/app/runtime/0-intro.md +58 -0
- package/docs/configure/app/runtime/plugins.md +58 -0
- package/docs/configure/app/runtime/router.md +35 -0
- package/docs/configure/app/security/check-syntax.md +69 -0
- package/docs/configure/app/security/nonce.md +15 -0
- package/docs/configure/app/security/sri.md +20 -0
- package/docs/configure/app/server/base-url.md +26 -0
- package/docs/configure/app/server/port.md +18 -0
- package/docs/configure/app/server/public-routes.md +22 -0
- package/docs/configure/app/server/routes.md +86 -0
- package/docs/configure/app/server/rsc.md +26 -0
- package/docs/configure/app/server/ssr-by-entries.md +25 -0
- package/docs/configure/app/server/ssr.md +78 -0
- package/docs/configure/app/server/tsconfig-path.md +59 -0
- package/docs/configure/app/source/alias-strategy.md +14 -0
- package/docs/configure/app/source/alias.md +23 -0
- package/docs/configure/app/source/config-dir.md +20 -0
- package/docs/configure/app/source/decorators.md +25 -0
- package/docs/configure/app/source/define.md +16 -0
- package/docs/configure/app/source/disable-default-entries.md +28 -0
- package/docs/configure/app/source/enable-async-entry.md +54 -0
- package/docs/configure/app/source/enable-async-pre-entry.md +26 -0
- package/docs/configure/app/source/entries-dir.md +35 -0
- package/docs/configure/app/source/entries.md +179 -0
- package/docs/configure/app/source/exclude.md +10 -0
- package/docs/configure/app/source/global-vars.md +106 -0
- package/docs/configure/app/source/include.md +36 -0
- package/docs/configure/app/source/main-entry-name.md +24 -0
- package/docs/configure/app/source/pre-entry.md +10 -0
- package/docs/configure/app/source/react-compiler.md +68 -0
- package/docs/configure/app/source/transform-import.md +27 -0
- package/docs/configure/app/split-chunks.md +17 -0
- package/docs/configure/app/tools/autoprefixer.md +44 -0
- package/docs/configure/app/tools/bundler-chain.md +26 -0
- package/docs/configure/app/tools/css-extract.md +33 -0
- package/docs/configure/app/tools/css-loader.md +17 -0
- package/docs/configure/app/tools/dev-server.md +113 -0
- package/docs/configure/app/tools/html-plugin.md +41 -0
- package/docs/configure/app/tools/less.md +81 -0
- package/docs/configure/app/tools/lightningcss-loader.md +35 -0
- package/docs/configure/app/tools/minify-css.md +53 -0
- package/docs/configure/app/tools/postcss.md +34 -0
- package/docs/configure/app/tools/rspack.md +10 -0
- package/docs/configure/app/tools/sass.md +78 -0
- package/docs/configure/app/tools/style-loader.md +10 -0
- package/docs/configure/app/tools/swc.md +65 -0
- package/docs/configure/app/tools/ts-checker.md +109 -0
- package/docs/configure/app/usage.md +276 -0
- package/docs/guides/advanced-features/bff/cross-project.md +109 -0
- package/docs/guides/advanced-features/bff/extend-server.md +120 -0
- package/docs/guides/advanced-features/bff/frameworks.md +124 -0
- package/docs/guides/advanced-features/bff/function.md +314 -0
- package/docs/guides/advanced-features/bff/operators.md +554 -0
- package/docs/guides/advanced-features/bff/sdk.md +116 -0
- package/docs/guides/advanced-features/bff/upload.md +101 -0
- package/docs/guides/advanced-features/bff.md +18 -0
- package/docs/guides/advanced-features/build-performance.md +130 -0
- package/docs/guides/advanced-features/compatibility.md +120 -0
- package/docs/guides/advanced-features/international/advanced.md +128 -0
- package/docs/guides/advanced-features/international/api.md +231 -0
- package/docs/guides/advanced-features/international/best-practices.md +286 -0
- package/docs/guides/advanced-features/international/configuration.md +227 -0
- package/docs/guides/advanced-features/international/locale-detection.md +126 -0
- package/docs/guides/advanced-features/international/quick-start.md +128 -0
- package/docs/guides/advanced-features/international/resource-loading.md +154 -0
- package/docs/guides/advanced-features/international/routing.md +130 -0
- package/docs/guides/advanced-features/international.md +27 -0
- package/docs/guides/advanced-features/low-level.md +46 -0
- package/docs/guides/advanced-features/page-performance/code-split.md +77 -0
- package/docs/guides/advanced-features/page-performance/inline-assets.md +159 -0
- package/docs/guides/advanced-features/page-performance/optimize-bundle.md +97 -0
- package/docs/guides/advanced-features/page-performance/react-compiler.md +69 -0
- package/docs/guides/advanced-features/server-monitor/logger.md +41 -0
- package/docs/guides/advanced-features/server-monitor/metrics.md +58 -0
- package/docs/guides/advanced-features/server-monitor/monitors.md +242 -0
- package/docs/guides/advanced-features/source-build.md +164 -0
- package/docs/guides/advanced-features/web-server.md +288 -0
- package/docs/guides/basic-features/alias.md +102 -0
- package/docs/guides/basic-features/css/css-in-js.md +72 -0
- package/docs/guides/basic-features/css/css-modules.md +212 -0
- package/docs/guides/basic-features/css/css.md +27 -0
- package/docs/guides/basic-features/css/tailwindcss.md +27 -0
- package/docs/guides/basic-features/data/data-cache.md +510 -0
- package/docs/guides/basic-features/data/data-fetch.md +415 -0
- package/docs/guides/basic-features/data/data-write.md +227 -0
- package/docs/guides/basic-features/debug/mock.md +109 -0
- package/docs/guides/basic-features/debug/proxy.md +21 -0
- package/docs/guides/basic-features/debug/rsdoctor.md +62 -0
- package/docs/guides/basic-features/debug/using-storybook.md +112 -0
- package/docs/guides/basic-features/deploy.md +458 -0
- package/docs/guides/basic-features/env-vars.md +177 -0
- package/docs/guides/basic-features/html.md +255 -0
- package/docs/guides/basic-features/output-files.md +141 -0
- package/docs/guides/basic-features/render/before-render.md +108 -0
- package/docs/guides/basic-features/render/overview.md +47 -0
- package/docs/guides/basic-features/render/rsc.md +525 -0
- package/docs/guides/basic-features/render/ssg.md +228 -0
- package/docs/guides/basic-features/render/ssr-cache.md +201 -0
- package/docs/guides/basic-features/render/ssr.md +321 -0
- package/docs/guides/basic-features/render/streaming-ssr.md +264 -0
- package/docs/guides/basic-features/routes/config-routes.md +426 -0
- package/docs/guides/basic-features/routes/routes.md +498 -0
- package/docs/guides/basic-features/static-assets/json-files.md +120 -0
- package/docs/guides/basic-features/static-assets/svg-assets.md +168 -0
- package/docs/guides/basic-features/static-assets/wasm-assets.md +62 -0
- package/docs/guides/basic-features/static-assets.md +160 -0
- package/docs/guides/basic-features/testing/playwright.md +120 -0
- package/docs/guides/basic-features/testing/rstest.md +251 -0
- package/docs/guides/concept/builder.md +37 -0
- package/docs/guides/concept/entries.md +319 -0
- package/docs/guides/concept/server.md +35 -0
- package/docs/guides/get-started/ai-coding-agents.md +58 -0
- package/docs/guides/get-started/glossary.md +63 -0
- package/docs/guides/get-started/introduction.md +36 -0
- package/docs/guides/get-started/quick-start.md +236 -0
- package/docs/guides/get-started/tech-stack.md +82 -0
- package/docs/guides/get-started/upgrade.md +123 -0
- package/docs/guides/topic-detail/module-federation/application.md +116 -0
- package/docs/guides/topic-detail/module-federation/deploy.md +104 -0
- package/docs/guides/topic-detail/module-federation/i18n.md +670 -0
- package/docs/guides/topic-detail/module-federation/introduce.md +35 -0
- package/docs/guides/topic-detail/module-federation/ssr.md +118 -0
- package/docs/guides/topic-detail/module-federation/usage.md +219 -0
- package/docs/guides/troubleshooting/builder.md +110 -0
- package/docs/guides/troubleshooting/cli.md +35 -0
- package/docs/guides/troubleshooting/dependencies.md +119 -0
- package/docs/guides/troubleshooting/hmr.md +144 -0
- package/docs/guides/upgrade/config.md +963 -0
- package/docs/guides/upgrade/entry.md +463 -0
- package/docs/guides/upgrade/other.md +183 -0
- package/docs/guides/upgrade/overview.md +33 -0
- package/docs/guides/upgrade/tailwindcss.md +91 -0
- package/docs/guides/upgrade/web-server.md +109 -0
- package/docs/index.md +33 -0
- package/docs/llms.txt +285 -0
- package/docs/plugin/cli-plugins/api.md +573 -0
- package/docs/plugin/cli-plugins/life-cycle.md +2 -0
- package/docs/plugin/introduction.md +152 -0
- package/docs/plugin/official/cli-plugins/plugin-bff.md +5 -0
- package/docs/plugin/official/cli-plugins/plugin-ssg.md +5 -0
- package/docs/plugin/official/cli-plugins/plugin-styled-components.md +5 -0
- package/docs/plugin/official/cli-plugins.md +4 -0
- package/docs/plugin/plugin-system.md +238 -0
- package/docs/plugin/runtime-plugins/api.md +194 -0
- package/docs/plugin/runtime-plugins/life-cycle.md +2 -0
- package/docs/plugin/server-plugins/api.md +209 -0
- package/docs/plugin/server-plugins/life-cycle.md +13 -0
- package/docs/tutorials/examples/csr-auth.md +9 -0
- package/docs/tutorials/foundations/introduction.md +16 -0
- package/package.json +46 -13
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Data Mocking
|
|
2
|
+
|
|
3
|
+
Modern.js allows you to easily generate mock data so that the front-end can develop independently without depending on the back-end API.
|
|
4
|
+
|
|
5
|
+
## Enabling Mock
|
|
6
|
+
|
|
7
|
+
By convention, when there is an `index.ts` in the `config/mock/` directory, mock data will be automatically enabled:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
.
|
|
11
|
+
├── config
|
|
12
|
+
│ └── mock
|
|
13
|
+
│ └── index.ts
|
|
14
|
+
├── src
|
|
15
|
+
│ └── App.tsx
|
|
16
|
+
└── modern.config.ts
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
You can use [`dev.mockDir`](/configure/app/dev/mock-dir.md) to place the
|
|
20
|
+
Mock entry in another directory:
|
|
21
|
+
|
|
22
|
+
```js title="modern.config.ts"
|
|
23
|
+
export default {
|
|
24
|
+
dev: {
|
|
25
|
+
mockDir: './mocks',
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Writing Mock Files
|
|
31
|
+
|
|
32
|
+
The `config/mock/index.ts` file only needs to export an object containing all Mock APIs. The properties of the object are composed of the request configuration `method` and `url`, and the corresponding property values can be `Object`, `Array`, or `Function`:
|
|
33
|
+
|
|
34
|
+
```js
|
|
35
|
+
export default {
|
|
36
|
+
/* The attribute is the concrete method and request url, and the value is object or array as the result of the request */
|
|
37
|
+
'GET /api/getInfo': { data: [1, 2, 3, 4] },
|
|
38
|
+
|
|
39
|
+
/* the default method is GET */
|
|
40
|
+
'/api/getExample': { id: 1 },
|
|
41
|
+
|
|
42
|
+
/* You can use custom functions to dynamically return data, req and res are both Node.js HTTP objects. */
|
|
43
|
+
'POST /api/addInfo': (req, res, next) => {
|
|
44
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
45
|
+
res.end('200');
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
When you access `http://localhost:8080/api/getInfo`, the API will return JSON `{ "data": [1, 2, 3, 4] }`.
|
|
51
|
+
|
|
52
|
+
## Return Random Data
|
|
53
|
+
|
|
54
|
+
Libraries such as [Mock.js](https://github.com/nuysoft/Mock/wiki/Getting-Started) can be used in `config/mock/index.js` to generate random data. For example:
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
const Mock = require('mockjs');
|
|
58
|
+
|
|
59
|
+
module.exports = {
|
|
60
|
+
'/api/getInfo': Mock.mock({
|
|
61
|
+
'data|1-10': [{ name: '@cname' }],
|
|
62
|
+
}) /* => {data: [{name: "Jack"}, {name: "Jim"}, {name: "Mary"}} */,
|
|
63
|
+
};
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
:::info Other Mock Libraries
|
|
67
|
+
|
|
68
|
+
- [Chancejs](https://github.com/chancejs/chancejs)
|
|
69
|
+
- [Mock](https://github.com/nuysoft/Mock/wiki/Getting-Started)
|
|
70
|
+
|
|
71
|
+
:::
|
|
72
|
+
|
|
73
|
+
## Delayed Response
|
|
74
|
+
|
|
75
|
+
- You can do this by using the browser's "weak connection simulation" feature.
|
|
76
|
+
- Delays can be set via `setTimeout`, for example:
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
export default {
|
|
80
|
+
'/api/getInfo': (req, res) => {
|
|
81
|
+
setTimeout(() => {
|
|
82
|
+
res.end('delay 2000ms');
|
|
83
|
+
}, 2000);
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Use Mock On Demand
|
|
89
|
+
|
|
90
|
+
Under the `config/mock/index.ts`, you can also export the `config` to control the Mock service.
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
import type { IncomingMessage } from 'node:http';
|
|
94
|
+
import type { ServerResponse } from 'node:http';
|
|
95
|
+
|
|
96
|
+
type MockConfig = {
|
|
97
|
+
enable: ((req: IncomingMessage, res: ServerResponse) => boolean) | boolean;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export const config = {
|
|
101
|
+
enable: false
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Currently only the `enable` configuration is supported, which allows developers to control whether to execute mock.
|
|
106
|
+
|
|
107
|
+
:::note
|
|
108
|
+
After modifying `config`, there is no need to restart the service, which will take effect immediately.
|
|
109
|
+
:::
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Local Proxy
|
|
2
|
+
|
|
3
|
+
Modern.js provides a way to configure the development proxy in [`dev.server.proxy`](/configure/app/dev/server.md).
|
|
4
|
+
|
|
5
|
+
For example, to proxy the local interface to another address:
|
|
6
|
+
|
|
7
|
+
```ts title="modern.config.ts"
|
|
8
|
+
import { defineConfig } from '@modern-js/app-tools';
|
|
9
|
+
|
|
10
|
+
export default defineConfig({
|
|
11
|
+
dev: {
|
|
12
|
+
server: {
|
|
13
|
+
proxy: {
|
|
14
|
+
// http://localhost:8080/api -> https://example.com/api
|
|
15
|
+
// http://localhost:8080/api/foo -> https://example.com/api/foo
|
|
16
|
+
'/api': 'https://example.com',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Using Rsdoctor
|
|
2
|
+
|
|
3
|
+
Rsdoctor is a Rspack build analysis tool. In Modern.js, we recommend using Rsdoctor to diagnose and analyze the build process and build outputs.
|
|
4
|
+
|
|
5
|
+
## Install Dependencies
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
```sh [npm]
|
|
9
|
+
npm add @rsdoctor/rspack-plugin -D
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```sh [yarn]
|
|
13
|
+
yarn add @rsdoctor/rspack-plugin -D
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
```sh [pnpm]
|
|
17
|
+
pnpm add @rsdoctor/rspack-plugin -D
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```sh [bun]
|
|
21
|
+
bun add @rsdoctor/rspack-plugin -D
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```sh [deno]
|
|
25
|
+
deno add npm:@rsdoctor/rspack-plugin -D
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Register Plugin
|
|
29
|
+
|
|
30
|
+
In `modern.config.ts`, you can register the Rspack plugin via `tools.bundlerChain`. Refer to the example below:
|
|
31
|
+
|
|
32
|
+
```ts title="modern.config.ts"
|
|
33
|
+
import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin';
|
|
34
|
+
|
|
35
|
+
export default {
|
|
36
|
+
// ...
|
|
37
|
+
tools: {
|
|
38
|
+
bundlerChain(chain) {
|
|
39
|
+
// Only register the plugin when RSDOCTOR is true, as the plugin will increase build time.
|
|
40
|
+
if (process.env.RSDOCTOR) {
|
|
41
|
+
chain.plugin('rsdoctor').use(RsdoctorRspackPlugin, [
|
|
42
|
+
{
|
|
43
|
+
// Plugin options
|
|
44
|
+
},
|
|
45
|
+
]);
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Execute Build
|
|
53
|
+
|
|
54
|
+
You can execute the build command within your project. After the build is complete, Rsdoctor will automatically open the analysis page for the build.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
RSDOCTOR=true npm run build
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Related Documentation
|
|
61
|
+
|
|
62
|
+
For more information, please refer to the [Rsdoctor Website](https://rsdoctor.rs/).
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Using Storybook
|
|
2
|
+
|
|
3
|
+
[Storybook](https://storybook.js.org/) is a tool specifically designed for component debugging. It provides:
|
|
4
|
+
|
|
5
|
+
- A rich variety of debugging capabilities
|
|
6
|
+
- Integration with some testing tools
|
|
7
|
+
- Reusable documentation content
|
|
8
|
+
- Sharing capabilities
|
|
9
|
+
- Workflow automation
|
|
10
|
+
|
|
11
|
+
## Principle
|
|
12
|
+
|
|
13
|
+
Rsbuild provides [Storybook Rsbuild](https://storybook.rsbuild.rs/index.html), which allows any Rsbuild project to use this tool for building Storybook.
|
|
14
|
+
|
|
15
|
+
Modern.js implements `storybook-addon-modernjs` based on this tool. This plugin loads the Modern.js configuration file and converts it into a configuration usable by **Storybook Rsbuild**.
|
|
16
|
+
|
|
17
|
+
:::info
|
|
18
|
+
This document only provides the simplest usage. For more information, please refer to [Storybook Rsbuild Modern.js Integration](https://storybook.rsbuild.rs/guide/integrations/modernjs.html).
|
|
19
|
+
:::
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
```sh [npm]
|
|
25
|
+
npm install @rsbuild/core storybook-builder-rsbuild storybook-addon-modernjs -D
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```sh [yarn]
|
|
29
|
+
yarn add @rsbuild/core storybook-builder-rsbuild storybook-addon-modernjs -D
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```sh [pnpm]
|
|
33
|
+
pnpm add @rsbuild/core storybook-builder-rsbuild storybook-addon-modernjs -D
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```sh [bun]
|
|
37
|
+
bun add @rsbuild/core storybook-builder-rsbuild storybook-addon-modernjs -D
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
```sh [deno]
|
|
41
|
+
deno add npm:@rsbuild/core npm:storybook-builder-rsbuild npm:storybook-addon-modernjs -D
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
You need to install `@rsbuild/core` in your project, otherwise the plugin may not work properly.
|
|
45
|
+
|
|
46
|
+
## Configure `.storybook/main.ts`
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
import type { StorybookConfig } from 'storybook-react-rsbuild'
|
|
50
|
+
|
|
51
|
+
const config: StorybookConfig = {
|
|
52
|
+
stories: ['../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
|
|
53
|
+
addons: ['storybook-addon-modernjs'],
|
|
54
|
+
framework: 'storybook-react-rsbuild',
|
|
55
|
+
}
|
|
56
|
+
export default config
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## BFF Integrated Calls in Storybook
|
|
60
|
+
|
|
61
|
+
When you want to call BFF APIs directly in Storybook components (for example `/api/**`), start the BFF service and configure a proxy in Storybook's dev server to avoid CORS issues.
|
|
62
|
+
|
|
63
|
+
### 1. Add scripts
|
|
64
|
+
|
|
65
|
+
Add the following scripts to `package.json` to start the BFF server and Storybook separately. The `BFF_PROXY` environment variable ensures the proxy is only enabled during Storybook build:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"scripts": {
|
|
70
|
+
"dev:api": "modern dev --api-only",
|
|
71
|
+
"storybook": "BFF_PROXY=1 storybook dev -p 6006 --no-open",
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 2. Configure proxy
|
|
77
|
+
|
|
78
|
+
Add the following config in `modern.config.ts` to proxy requests to the BFF service only during Storybook build:
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
export default applyBaseConfig({
|
|
82
|
+
dev: process.env.BFF_PROXY
|
|
83
|
+
? {
|
|
84
|
+
server: {
|
|
85
|
+
proxy: {
|
|
86
|
+
'/api': 'http://localhost:8080',
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
}
|
|
90
|
+
: {},
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Proxy path and port follow this logic:
|
|
95
|
+
|
|
96
|
+
- If `dev.server.proxy` is configured, use that configuration
|
|
97
|
+
- If not configured, the proxy path falls back to `bff.prefix`, otherwise `/api`
|
|
98
|
+
- If not configured, the target port falls back to `server.port`, otherwise `8080`
|
|
99
|
+
- The final target is `http://localhost:<port>`
|
|
100
|
+
|
|
101
|
+
### 3. Start
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
pnpm dev:api
|
|
105
|
+
pnpm storybook
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Now you can request the path configured in `bff.prefix`; if not configured, use `/api/**`.
|
|
109
|
+
|
|
110
|
+
## Example
|
|
111
|
+
|
|
112
|
+
You can check out the [example](https://github.com/rstackjs/storybook-rsbuild/tree/main/sandboxes/modernjs-react) to learn how to use Storybook in Modern.js.
|