@modern-js/app-tools 3.6.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/bin/modern-bundle-docs.js +7 -0
  2. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +5 -1
  3. package/dist/cjs/bundleDocs.js +114 -0
  4. package/dist/cjs/commands/build.js +2 -1
  5. package/dist/cjs/commands/deploy.js +4 -2
  6. package/dist/cjs/commands/index.js +0 -4
  7. package/dist/cjs/config/default.js +2 -0
  8. package/dist/cjs/index.js +52 -14
  9. package/dist/cjs/plugins/analyze/index.js +2 -2
  10. package/dist/cjs/plugins/analyze/utils.js +3 -2
  11. package/dist/cjs/plugins/initialize/index.js +4 -3
  12. package/dist/cjs/plugins/serverBuild.js +3 -2
  13. package/dist/esm/builder/generator/createBuilderProviderConfig.mjs +5 -1
  14. package/dist/esm/bundleDocs.mjs +62 -0
  15. package/dist/esm/commands/build.mjs +2 -1
  16. package/dist/esm/commands/deploy.mjs +4 -2
  17. package/dist/esm/commands/index.mjs +0 -4
  18. package/dist/esm/config/default.mjs +2 -0
  19. package/dist/esm/index.mjs +15 -1
  20. package/dist/esm/plugins/analyze/index.mjs +2 -2
  21. package/dist/esm/plugins/analyze/utils.mjs +3 -2
  22. package/dist/esm/plugins/initialize/index.mjs +4 -3
  23. package/dist/esm/plugins/serverBuild.mjs +3 -2
  24. package/dist/esm-node/builder/generator/createBuilderProviderConfig.mjs +5 -1
  25. package/dist/esm-node/bundleDocs.mjs +63 -0
  26. package/dist/esm-node/commands/build.mjs +2 -1
  27. package/dist/esm-node/commands/deploy.mjs +4 -2
  28. package/dist/esm-node/commands/index.mjs +0 -4
  29. package/dist/esm-node/config/default.mjs +2 -0
  30. package/dist/esm-node/index.mjs +15 -1
  31. package/dist/esm-node/plugins/analyze/index.mjs +2 -2
  32. package/dist/esm-node/plugins/analyze/utils.mjs +3 -2
  33. package/dist/esm-node/plugins/initialize/index.mjs +4 -3
  34. package/dist/esm-node/plugins/serverBuild.mjs +3 -2
  35. package/dist/types/bundleDocs.d.ts +20 -0
  36. package/dist/types/commands/deploy.d.ts +2 -1
  37. package/dist/types/index.d.ts +4 -1
  38. package/dist/types/plugins/analyze/utils.d.ts +1 -1
  39. package/dist/types/types/config/dev.d.ts +6 -0
  40. package/docs/apis/app/commands.md +241 -0
  41. package/docs/apis/app/hooks/api/lambda.md +9 -0
  42. package/docs/apis/app/hooks/config/favicon.md +24 -0
  43. package/docs/apis/app/hooks/config/html.md +5 -0
  44. package/docs/apis/app/hooks/config/icon.md +24 -0
  45. package/docs/apis/app/hooks/config/mock.md +6 -0
  46. package/docs/apis/app/hooks/config/public.md +26 -0
  47. package/docs/apis/app/hooks/config/upload.md +50 -0
  48. package/docs/apis/app/hooks/modern-config.md +5 -0
  49. package/docs/apis/app/hooks/server/server.md +5 -0
  50. package/docs/apis/app/hooks/shared.md +3 -0
  51. package/docs/apis/app/hooks/src/app.md +30 -0
  52. package/docs/apis/app/hooks/src/entry.md +34 -0
  53. package/docs/apis/app/hooks/src/entry.server.md +51 -0
  54. package/docs/apis/app/hooks/src/modern.runtime.md +5 -0
  55. package/docs/apis/app/hooks/src/routes.md +86 -0
  56. package/docs/apis/app/hooks/src/server.md +3 -0
  57. package/docs/apis/app/runtime/bff/use-hono-context.md +27 -0
  58. package/docs/apis/app/runtime/core/create-root.md +19 -0
  59. package/docs/apis/app/runtime/core/render.md +39 -0
  60. package/docs/apis/app/runtime/core/runtime-context.md +156 -0
  61. package/docs/apis/app/runtime/router/router.md +280 -0
  62. package/docs/apis/app/runtime/ssr/no-ssr.md +35 -0
  63. package/docs/apis/app/runtime/ssr/renderStreaming.md +67 -0
  64. package/docs/apis/app/runtime/ssr/renderString.md +60 -0
  65. package/docs/apis/app/runtime/ssr/requestHandler.md +44 -0
  66. package/docs/apis/app/runtime/utility/css-in-js.md +40 -0
  67. package/docs/apis/app/runtime/utility/head.md +35 -0
  68. package/docs/apis/app/runtime/utility/loadable.md +82 -0
  69. package/docs/community/blog/2022-0708-updates.md +91 -0
  70. package/docs/community/blog/2022-0910-updates.md +76 -0
  71. package/docs/community/blog/overview.md +63 -0
  72. package/docs/community/blog/v2-release-note.md +238 -0
  73. package/docs/community/blog/v3-release-note.md +622 -0
  74. package/docs/community/contributing-guide.md +253 -0
  75. package/docs/community/releases.md +27 -0
  76. package/docs/community/showcase.md +34 -0
  77. package/docs/community/team.md +14 -0
  78. package/docs/configure/app/bff/cross-project.md +20 -0
  79. package/docs/configure/app/bff/prefix.md +29 -0
  80. package/docs/configure/app/builder-plugins.md +66 -0
  81. package/docs/configure/app/dev/asset-prefix.md +13 -0
  82. package/docs/configure/app/dev/before-start-url.md +17 -0
  83. package/docs/configure/app/dev/client.md +41 -0
  84. package/docs/configure/app/dev/hmr.md +10 -0
  85. package/docs/configure/app/dev/host.md +18 -0
  86. package/docs/configure/app/dev/https.md +77 -0
  87. package/docs/configure/app/dev/lazy-compilation.md +39 -0
  88. package/docs/configure/app/dev/live-reload.md +10 -0
  89. package/docs/configure/app/dev/mock-dir.md +31 -0
  90. package/docs/configure/app/dev/progress-bar.md +19 -0
  91. package/docs/configure/app/dev/server.md +124 -0
  92. package/docs/configure/app/dev/setup-middlewares.md +32 -0
  93. package/docs/configure/app/dev/start-url.md +48 -0
  94. package/docs/configure/app/dev/watch-files.md +27 -0
  95. package/docs/configure/app/dev/write-to-disk.md +10 -0
  96. package/docs/configure/app/experiments/source-build.md +31 -0
  97. package/docs/configure/app/html/app-icon.md +28 -0
  98. package/docs/configure/app/html/crossorigin.md +10 -0
  99. package/docs/configure/app/html/favicon.md +16 -0
  100. package/docs/configure/app/html/inject.md +10 -0
  101. package/docs/configure/app/html/meta.md +24 -0
  102. package/docs/configure/app/html/mount-id.md +10 -0
  103. package/docs/configure/app/html/output-structure.md +10 -0
  104. package/docs/configure/app/html/script-loading.md +10 -0
  105. package/docs/configure/app/html/tags.md +15 -0
  106. package/docs/configure/app/html/template-parameters.md +33 -0
  107. package/docs/configure/app/html/template.md +10 -0
  108. package/docs/configure/app/html/title.md +18 -0
  109. package/docs/configure/app/output/asset-prefix.md +11 -0
  110. package/docs/configure/app/output/assets-retry.md +77 -0
  111. package/docs/configure/app/output/charset.md +10 -0
  112. package/docs/configure/app/output/clean-dist-path.md +16 -0
  113. package/docs/configure/app/output/convert-to-rem.md +79 -0
  114. package/docs/configure/app/output/copy.md +10 -0
  115. package/docs/configure/app/output/css-modules.md +48 -0
  116. package/docs/configure/app/output/data-uri-limit.md +26 -0
  117. package/docs/configure/app/output/disable-css-module-extension.md +55 -0
  118. package/docs/configure/app/output/disable-inline-runtime-chunk.md +41 -0
  119. package/docs/configure/app/output/disable-svgr.md +16 -0
  120. package/docs/configure/app/output/disable-ts-checker.md +49 -0
  121. package/docs/configure/app/output/dist-path.md +43 -0
  122. package/docs/configure/app/output/enable-asset-manifest.md +36 -0
  123. package/docs/configure/app/output/enable-css-module-tsdeclaration.md +28 -0
  124. package/docs/configure/app/output/enable-inline-route-manifests.md +16 -0
  125. package/docs/configure/app/output/externals.md +20 -0
  126. package/docs/configure/app/output/filename-hash.md +10 -0
  127. package/docs/configure/app/output/filename.md +55 -0
  128. package/docs/configure/app/output/inject-styles.md +10 -0
  129. package/docs/configure/app/output/inline-scripts.md +29 -0
  130. package/docs/configure/app/output/inline-styles.md +29 -0
  131. package/docs/configure/app/output/legal-comments.md +18 -0
  132. package/docs/configure/app/output/minify.md +22 -0
  133. package/docs/configure/app/output/override-browserslist.md +22 -0
  134. package/docs/configure/app/output/polyfill.md +12 -0
  135. package/docs/configure/app/output/source-map.md +30 -0
  136. package/docs/configure/app/output/split-route-chunks.md +16 -0
  137. package/docs/configure/app/output/ssg.md +81 -0
  138. package/docs/configure/app/output/ssgByEntries.md +90 -0
  139. package/docs/configure/app/output/svg-default-export.md +30 -0
  140. package/docs/configure/app/output/temp-dir.md +20 -0
  141. package/docs/configure/app/performance/build-cache.md +39 -0
  142. package/docs/configure/app/performance/chunk-split.md +40 -0
  143. package/docs/configure/app/performance/dns-prefetch.md +15 -0
  144. package/docs/configure/app/performance/preconnect.md +16 -0
  145. package/docs/configure/app/performance/prefetch.md +21 -0
  146. package/docs/configure/app/performance/preload.md +23 -0
  147. package/docs/configure/app/performance/print-file-size.md +40 -0
  148. package/docs/configure/app/performance/profile.md +10 -0
  149. package/docs/configure/app/performance/remove-console.md +10 -0
  150. package/docs/configure/app/performance/remove-moment-locale.md +10 -0
  151. package/docs/configure/app/plugins.md +59 -0
  152. package/docs/configure/app/resolve/alias-strategy.md +10 -0
  153. package/docs/configure/app/resolve/alias.md +9 -0
  154. package/docs/configure/app/resolve/condition-names.md +13 -0
  155. package/docs/configure/app/resolve/dedupe.md +9 -0
  156. package/docs/configure/app/resolve/extensions.md +13 -0
  157. package/docs/configure/app/runtime/0-intro.md +58 -0
  158. package/docs/configure/app/runtime/plugins.md +58 -0
  159. package/docs/configure/app/runtime/router.md +35 -0
  160. package/docs/configure/app/security/check-syntax.md +69 -0
  161. package/docs/configure/app/security/nonce.md +15 -0
  162. package/docs/configure/app/security/sri.md +20 -0
  163. package/docs/configure/app/server/base-url.md +26 -0
  164. package/docs/configure/app/server/port.md +18 -0
  165. package/docs/configure/app/server/public-routes.md +22 -0
  166. package/docs/configure/app/server/routes.md +86 -0
  167. package/docs/configure/app/server/rsc.md +26 -0
  168. package/docs/configure/app/server/ssr-by-entries.md +25 -0
  169. package/docs/configure/app/server/ssr.md +78 -0
  170. package/docs/configure/app/server/tsconfig-path.md +59 -0
  171. package/docs/configure/app/source/alias-strategy.md +14 -0
  172. package/docs/configure/app/source/alias.md +23 -0
  173. package/docs/configure/app/source/config-dir.md +20 -0
  174. package/docs/configure/app/source/decorators.md +25 -0
  175. package/docs/configure/app/source/define.md +16 -0
  176. package/docs/configure/app/source/disable-default-entries.md +28 -0
  177. package/docs/configure/app/source/enable-async-entry.md +54 -0
  178. package/docs/configure/app/source/enable-async-pre-entry.md +26 -0
  179. package/docs/configure/app/source/entries-dir.md +35 -0
  180. package/docs/configure/app/source/entries.md +179 -0
  181. package/docs/configure/app/source/exclude.md +10 -0
  182. package/docs/configure/app/source/global-vars.md +106 -0
  183. package/docs/configure/app/source/include.md +36 -0
  184. package/docs/configure/app/source/main-entry-name.md +24 -0
  185. package/docs/configure/app/source/pre-entry.md +10 -0
  186. package/docs/configure/app/source/react-compiler.md +68 -0
  187. package/docs/configure/app/source/transform-import.md +27 -0
  188. package/docs/configure/app/split-chunks.md +17 -0
  189. package/docs/configure/app/tools/autoprefixer.md +44 -0
  190. package/docs/configure/app/tools/bundler-chain.md +26 -0
  191. package/docs/configure/app/tools/css-extract.md +33 -0
  192. package/docs/configure/app/tools/css-loader.md +17 -0
  193. package/docs/configure/app/tools/dev-server.md +113 -0
  194. package/docs/configure/app/tools/html-plugin.md +41 -0
  195. package/docs/configure/app/tools/less.md +81 -0
  196. package/docs/configure/app/tools/lightningcss-loader.md +35 -0
  197. package/docs/configure/app/tools/minify-css.md +53 -0
  198. package/docs/configure/app/tools/postcss.md +34 -0
  199. package/docs/configure/app/tools/rspack.md +10 -0
  200. package/docs/configure/app/tools/sass.md +78 -0
  201. package/docs/configure/app/tools/style-loader.md +10 -0
  202. package/docs/configure/app/tools/swc.md +65 -0
  203. package/docs/configure/app/tools/ts-checker.md +109 -0
  204. package/docs/configure/app/usage.md +276 -0
  205. package/docs/guides/advanced-features/bff/cross-project.md +109 -0
  206. package/docs/guides/advanced-features/bff/extend-server.md +120 -0
  207. package/docs/guides/advanced-features/bff/frameworks.md +124 -0
  208. package/docs/guides/advanced-features/bff/function.md +314 -0
  209. package/docs/guides/advanced-features/bff/operators.md +554 -0
  210. package/docs/guides/advanced-features/bff/sdk.md +116 -0
  211. package/docs/guides/advanced-features/bff/upload.md +101 -0
  212. package/docs/guides/advanced-features/bff.md +18 -0
  213. package/docs/guides/advanced-features/build-performance.md +130 -0
  214. package/docs/guides/advanced-features/compatibility.md +120 -0
  215. package/docs/guides/advanced-features/international/advanced.md +128 -0
  216. package/docs/guides/advanced-features/international/api.md +231 -0
  217. package/docs/guides/advanced-features/international/best-practices.md +286 -0
  218. package/docs/guides/advanced-features/international/configuration.md +227 -0
  219. package/docs/guides/advanced-features/international/locale-detection.md +126 -0
  220. package/docs/guides/advanced-features/international/quick-start.md +128 -0
  221. package/docs/guides/advanced-features/international/resource-loading.md +154 -0
  222. package/docs/guides/advanced-features/international/routing.md +130 -0
  223. package/docs/guides/advanced-features/international.md +27 -0
  224. package/docs/guides/advanced-features/low-level.md +46 -0
  225. package/docs/guides/advanced-features/page-performance/code-split.md +77 -0
  226. package/docs/guides/advanced-features/page-performance/inline-assets.md +159 -0
  227. package/docs/guides/advanced-features/page-performance/optimize-bundle.md +97 -0
  228. package/docs/guides/advanced-features/page-performance/react-compiler.md +69 -0
  229. package/docs/guides/advanced-features/server-monitor/logger.md +41 -0
  230. package/docs/guides/advanced-features/server-monitor/metrics.md +58 -0
  231. package/docs/guides/advanced-features/server-monitor/monitors.md +242 -0
  232. package/docs/guides/advanced-features/source-build.md +164 -0
  233. package/docs/guides/advanced-features/web-server.md +288 -0
  234. package/docs/guides/basic-features/alias.md +102 -0
  235. package/docs/guides/basic-features/css/css-in-js.md +72 -0
  236. package/docs/guides/basic-features/css/css-modules.md +212 -0
  237. package/docs/guides/basic-features/css/css.md +27 -0
  238. package/docs/guides/basic-features/css/tailwindcss.md +27 -0
  239. package/docs/guides/basic-features/data/data-cache.md +510 -0
  240. package/docs/guides/basic-features/data/data-fetch.md +415 -0
  241. package/docs/guides/basic-features/data/data-write.md +227 -0
  242. package/docs/guides/basic-features/debug/mock.md +109 -0
  243. package/docs/guides/basic-features/debug/proxy.md +21 -0
  244. package/docs/guides/basic-features/debug/rsdoctor.md +62 -0
  245. package/docs/guides/basic-features/debug/using-storybook.md +112 -0
  246. package/docs/guides/basic-features/deploy.md +458 -0
  247. package/docs/guides/basic-features/env-vars.md +177 -0
  248. package/docs/guides/basic-features/html.md +255 -0
  249. package/docs/guides/basic-features/output-files.md +141 -0
  250. package/docs/guides/basic-features/render/before-render.md +108 -0
  251. package/docs/guides/basic-features/render/overview.md +47 -0
  252. package/docs/guides/basic-features/render/rsc.md +525 -0
  253. package/docs/guides/basic-features/render/ssg.md +228 -0
  254. package/docs/guides/basic-features/render/ssr-cache.md +201 -0
  255. package/docs/guides/basic-features/render/ssr.md +321 -0
  256. package/docs/guides/basic-features/render/streaming-ssr.md +264 -0
  257. package/docs/guides/basic-features/routes/config-routes.md +426 -0
  258. package/docs/guides/basic-features/routes/routes.md +498 -0
  259. package/docs/guides/basic-features/static-assets/json-files.md +120 -0
  260. package/docs/guides/basic-features/static-assets/svg-assets.md +168 -0
  261. package/docs/guides/basic-features/static-assets/wasm-assets.md +62 -0
  262. package/docs/guides/basic-features/static-assets.md +160 -0
  263. package/docs/guides/basic-features/testing/playwright.md +120 -0
  264. package/docs/guides/basic-features/testing/rstest.md +251 -0
  265. package/docs/guides/concept/builder.md +37 -0
  266. package/docs/guides/concept/entries.md +319 -0
  267. package/docs/guides/concept/server.md +35 -0
  268. package/docs/guides/get-started/ai-coding-agents.md +58 -0
  269. package/docs/guides/get-started/glossary.md +63 -0
  270. package/docs/guides/get-started/introduction.md +36 -0
  271. package/docs/guides/get-started/quick-start.md +236 -0
  272. package/docs/guides/get-started/tech-stack.md +82 -0
  273. package/docs/guides/get-started/upgrade.md +123 -0
  274. package/docs/guides/topic-detail/module-federation/application.md +116 -0
  275. package/docs/guides/topic-detail/module-federation/deploy.md +104 -0
  276. package/docs/guides/topic-detail/module-federation/i18n.md +670 -0
  277. package/docs/guides/topic-detail/module-federation/introduce.md +35 -0
  278. package/docs/guides/topic-detail/module-federation/ssr.md +118 -0
  279. package/docs/guides/topic-detail/module-federation/usage.md +219 -0
  280. package/docs/guides/troubleshooting/builder.md +110 -0
  281. package/docs/guides/troubleshooting/cli.md +35 -0
  282. package/docs/guides/troubleshooting/dependencies.md +119 -0
  283. package/docs/guides/troubleshooting/hmr.md +144 -0
  284. package/docs/guides/upgrade/config.md +963 -0
  285. package/docs/guides/upgrade/entry.md +463 -0
  286. package/docs/guides/upgrade/other.md +183 -0
  287. package/docs/guides/upgrade/overview.md +33 -0
  288. package/docs/guides/upgrade/tailwindcss.md +91 -0
  289. package/docs/guides/upgrade/web-server.md +109 -0
  290. package/docs/index.md +33 -0
  291. package/docs/llms.txt +285 -0
  292. package/docs/plugin/cli-plugins/api.md +573 -0
  293. package/docs/plugin/cli-plugins/life-cycle.md +2 -0
  294. package/docs/plugin/introduction.md +152 -0
  295. package/docs/plugin/official/cli-plugins/plugin-bff.md +5 -0
  296. package/docs/plugin/official/cli-plugins/plugin-ssg.md +5 -0
  297. package/docs/plugin/official/cli-plugins/plugin-styled-components.md +5 -0
  298. package/docs/plugin/official/cli-plugins.md +4 -0
  299. package/docs/plugin/plugin-system.md +238 -0
  300. package/docs/plugin/runtime-plugins/api.md +194 -0
  301. package/docs/plugin/runtime-plugins/life-cycle.md +2 -0
  302. package/docs/plugin/server-plugins/api.md +209 -0
  303. package/docs/plugin/server-plugins/life-cycle.md +13 -0
  304. package/docs/tutorials/examples/csr-auth.md +9 -0
  305. package/docs/tutorials/foundations/introduction.md +16 -0
  306. package/package.json +48 -15
@@ -0,0 +1,963 @@
1
+ # Configuration Changes
2
+
3
+ This document mainly introduces incompatible configuration changes and recommended migration methods when upgrading from Modern.js 2.0 to 3.0.
4
+
5
+ ## dev
6
+
7
+ ### dev.port
8
+
9
+ **Change**: This configuration has been removed and replaced with `server.port`.
10
+
11
+ **Migration Example**:
12
+
13
+ ```typescript
14
+ // Before
15
+ dev: {
16
+ port: 8080;
17
+ }
18
+
19
+ // After
20
+ server: {
21
+ port: process.env.NODE_ENV === 'development' ? 8080 : undefined;
22
+ }
23
+ ```
24
+
25
+ ## html
26
+
27
+ ### html.appIcon
28
+
29
+ **Change**: String format is no longer supported, object format must be used.
30
+
31
+ **V2 Type**:
32
+
33
+ ```typescript
34
+ type AppIconItem = {
35
+ src: string;
36
+ size: number;
37
+ target?: 'apple-touch-icon' | 'web-app-manifest';
38
+ };
39
+
40
+ type AppIcon =
41
+ | string
42
+ | {
43
+ name?: string;
44
+ icons: AppIconItem[];
45
+ filename?: string;
46
+ };
47
+ ```
48
+
49
+ **V3 Type**:
50
+
51
+ ```typescript
52
+ type AppIconItem = {
53
+ src: string;
54
+ size: number;
55
+ target?: 'apple-touch-icon' | 'web-app-manifest';
56
+ };
57
+
58
+ type AppIcon = {
59
+ name?: string;
60
+ icons: AppIconItem[];
61
+ filename?: string;
62
+ };
63
+ ```
64
+
65
+ **Migration Example**:
66
+
67
+ ```typescript
68
+ // v2
69
+ export default {
70
+ html: {
71
+ appIcon: './src/assets/icon.png',
72
+ },
73
+ };
74
+
75
+ // v3
76
+ export default {
77
+ html: {
78
+ appIcon: {
79
+ icons: [
80
+ {
81
+ src: './src/assets/icon.png',
82
+ size: 180,
83
+ },
84
+ ],
85
+ },
86
+ },
87
+ };
88
+ ```
89
+
90
+ ### html.xxxByEntries
91
+
92
+ **Change**: Configurations such as `metaByEntries`, `templateParametersByEntries`, `injectByEntries`, `tagsByEnties`, `faviconByEntries`, `templateByEnties`, `titleByEntries` have been deprecated and need to be replaced with function syntax.
93
+
94
+ **Migration Steps**:
95
+
96
+ 1. Remove related configurations
97
+ 2. Use the function syntax of `html.xxx` instead
98
+
99
+ **Migration Example**:
100
+
101
+ ```typescript
102
+ // v2
103
+ export default {
104
+ html: {
105
+ metaByEntries: {
106
+ foo: {
107
+ description: 'TikTok',
108
+ },
109
+ // Other configurations...
110
+ },
111
+ },
112
+ };
113
+
114
+ // v3
115
+ export default {
116
+ html: {
117
+ meta({ entryName }) {
118
+ switch (entryName) {
119
+ case 'foo':
120
+ return {
121
+ description: 'TikTok',
122
+ };
123
+ // Other configurations...
124
+ }
125
+ },
126
+ },
127
+ };
128
+ ```
129
+
130
+ ### html.disableHtmlFolder
131
+
132
+ **Change**: This configuration has been deprecated, use `html.outputStructure` instead.
133
+
134
+ **Migration Example**:
135
+
136
+ ```typescript
137
+ // v2 - equivalent to html.outputStructure configured as nested
138
+ export default {
139
+ html: {
140
+ disableHtmlFolder: true,
141
+ },
142
+ };
143
+
144
+ // v3
145
+ export default {
146
+ html: {
147
+ outputStructure: 'flat',
148
+ },
149
+ };
150
+ ```
151
+
152
+ ## tools
153
+
154
+ ### toos.postcss
155
+
156
+ **Change**: The object configuration will override the built-in PostCSS configuration of Modern.js. If you need to extend based on the built-in configuration, please use the function configuration.
157
+
158
+ ```typescript
159
+ // v2
160
+ export default {
161
+ tools: {
162
+ postcss: {
163
+ postcssOptions: {
164
+ plugins: [tailwindcssPlugin],
165
+ },
166
+ },
167
+ },
168
+ };
169
+ ```
170
+
171
+ ```typescript
172
+ // v3
173
+ export default {
174
+ tools: {
175
+ postcss: (opts, { addPlugins }) => {
176
+ addPlugins(tailwindcssPlugin);
177
+ },
178
+ },
179
+ };
180
+ ```
181
+
182
+ ### tools.esbuild
183
+
184
+ **Change**: This configuration has been deprecated, you need to manually switch to esbuild minification.
185
+
186
+ ```typescript
187
+ // This configuration has been deprecated, please refer to [Switching Minifier](https://v2.rsbuild.rs/config/output/minify#switching-minifier) to manually switch to esbuild minification
188
+ // tools: {
189
+ // esbuild: { /* configuration */ }
190
+ // },
191
+ ```
192
+
193
+ ### tools.terser
194
+
195
+ **Change**: This configuration has been deprecated, you need to manually switch to Terser minification.
196
+
197
+ ```typescript
198
+ // This configuration has been deprecated, please refer to [Switching Minifier](https://v2.rsbuild.rs/config/output/minify#switching-minifier) to manually switch to Terser minification
199
+ // tools: {
200
+ // terser: { /* configuration */ }
201
+ // },
202
+ ```
203
+
204
+ ### tools.devServer
205
+
206
+ **Change 1**: `after`, `before`, `devMiddleware` configurations have been deprecated, use `dev.setupDevMiddlewares` configuration instead.
207
+
208
+ **Migration Example**:
209
+
210
+ ```typescript
211
+ // v2
212
+ export default {
213
+ tools: {
214
+ devServer: {
215
+ before: [...],
216
+ after: [...],
217
+ devMiddleware: {
218
+ writeToDisk: true
219
+ }
220
+ }
221
+ }
222
+ };
223
+
224
+ // v3
225
+ export default {
226
+ dev: {
227
+ setupMiddlewares: [...],
228
+ writeToDisk: true
229
+ }
230
+ };
231
+ ```
232
+
233
+ **Change 2**: `client`, `https`, `liveReload` configurations have been deprecated, use corresponding `dev.client`, `dev.https`, `dev.liveReload` configurations instead.
234
+
235
+ **Migration Example**:
236
+
237
+ ```typescript
238
+ // v2
239
+ export default {
240
+ tools: {
241
+ devServer: {
242
+ client: {
243
+ port: 8081,
244
+ },
245
+ },
246
+ },
247
+ };
248
+
249
+ // v3
250
+ export default {
251
+ dev: {
252
+ client: {
253
+ port: 8081,
254
+ },
255
+ },
256
+ };
257
+ ```
258
+
259
+ **Change 3**: `hot` configuration has been deprecated, use `dev.hmr` configuration instead.
260
+
261
+ **Migration Example**:
262
+
263
+ ```typescript
264
+ // v2
265
+ export default {
266
+ tools: {
267
+ devServer: {
268
+ hot: false,
269
+ },
270
+ },
271
+ };
272
+
273
+ // v3
274
+ export default {
275
+ dev: {
276
+ hmr: false,
277
+ },
278
+ };
279
+ ```
280
+
281
+ **Change 4**: `compress`, `headers`, `historyApiFallback`, `watch` configurations have been deprecated, use `dev.server.compress`, `dev.server.headers`, `dev.server.historyApiFallback`, `dev.server.watch` configurations instead.
282
+
283
+ **Migration Example**:
284
+
285
+ ```typescript
286
+ // v2
287
+ export default {
288
+ tools: {
289
+ devServer: {
290
+ compress: true,
291
+ headers: {
292
+ 'X-Custom-Header': 'custom-value',
293
+ },
294
+ historyApiFallback: true,
295
+ watch: true,
296
+ },
297
+ },
298
+ };
299
+
300
+ // v3
301
+ export default {
302
+ dev: {
303
+ server: {
304
+ compress: true,
305
+ headers: {
306
+ 'X-Custom-Header': 'custom-value',
307
+ },
308
+ historyApiFallback: true,
309
+ watch: true,
310
+ },
311
+ },
312
+ };
313
+ ```
314
+
315
+ ### tools.pug
316
+
317
+ **Change**: This configuration has been deprecated, use Rsbuild's [Pug plugin](https://github.com/rstackjs/rsbuild-plugin-pug) to enable support.
318
+
319
+ **Migration Example**:
320
+
321
+ ```typescript
322
+ // v2
323
+ tools: {
324
+ pug: true,
325
+ },
326
+
327
+ // v3
328
+ import { pluginPug } from "@rsbuild/plugin-pug";
329
+
330
+ export default {
331
+ builderPlugins: [pluginPug()],
332
+ };
333
+ ```
334
+
335
+ ### tools.rsdoctor
336
+
337
+ **Change**: This configuration has been deprecated, please refer to the [Rsdoctor documentation](/guides/basic-features/debug/rsdoctor.md) and use Rspack's [Rsdoctor plugin](https://rsdoctor.dev/) to enable support.
338
+
339
+ **Migration Example**:
340
+
341
+ ```typescript
342
+ // v2
343
+ tools: {
344
+ rsdoctor: {
345
+ disableClientServer: true,
346
+ features: ['bundle', 'loader', 'plugins', 'resolver'],
347
+ },
348
+ },
349
+
350
+ // v3
351
+ import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin';
352
+
353
+ export default {
354
+ // ...
355
+ tools: {
356
+ bundlerChain(chain) {
357
+ // Only register the plugin when RSDOCTOR is true, as the plugin will increase build time
358
+ if (process.env.RSDOCTOR) {
359
+ chain.plugin('rsdoctor').use(RsdoctorRspackPlugin, [
360
+ {
361
+ // Plugin options
362
+ disableClientServer: true,
363
+ features: ['bundle', 'loader', 'plugins', 'resolver'],
364
+ },
365
+ ]);
366
+ }
367
+ },
368
+ },
369
+ };
370
+ ```
371
+
372
+ ### tools.babel
373
+
374
+ **Change**: This configuration has been deprecated, the framework no longer includes Babel by default. Please use [Rsbuild's Babel plugin](https://v0.rsbuild.rs/plugins/list/plugin-babel) to enable support.
375
+
376
+ **Migration Example**:
377
+
378
+ ```typescript
379
+ // v2
380
+ tools: {
381
+ babel: {
382
+ plugins: [
383
+ [
384
+ 'babel-plugin-import',
385
+ {
386
+ libraryName: 'xxx-components',
387
+ libraryDirectory: 'es',
388
+ style: true,
389
+ },
390
+ ],
391
+ ],
392
+ },
393
+ }
394
+
395
+ // v3
396
+ import { pluginBabel } from '@rsbuild/plugin-babel';
397
+
398
+ export default {
399
+ // ...
400
+ builderPlugins: [
401
+ pluginBabel({
402
+ babelLoaderOptions: {
403
+ plugins: [
404
+ [
405
+ 'babel-plugin-import',
406
+ {
407
+ libraryName: 'my-components',
408
+ libraryDirectory: 'es',
409
+ style: true,
410
+ },
411
+ ],
412
+ ],
413
+ },
414
+ })
415
+ ];
416
+ }
417
+ ```
418
+
419
+ ### tools.tailwindcss
420
+
421
+ **Change**: This configuration has been deprecated, please refer to [Tailwind Plugin Changes](/guides/upgrade/tailwindcss.md) and use Rsbuild's approach to integrate Tailwind CSS.
422
+
423
+ ### tools.tsLoader
424
+
425
+ **Change**: Since Rspack does not support `tsLoader`, this configuration has been deprecated. The [Rspack experiments.typeReexportsPresence configuration](https://rspack.rs/config/experiments#experimentstypereexportspresence) can be used to improve recognition of TypeScript type exports, which can assist with ts-loader migration.
426
+
427
+ ```typescript
428
+ // This configuration has been deprecated
429
+ // tools: {
430
+ // tsLoader: { /* configuration */ }
431
+ // },
432
+ ```
433
+
434
+ ### tools.webpackChain
435
+
436
+ **Change**: This configuration has been deprecated, please migrate to `tools.bundlerChain`.
437
+
438
+ ```typescript
439
+ // v2
440
+ tools: {
441
+ webpackChain: (chain, { env }) => {
442
+ if (env === 'development') {
443
+ chain.devtool('cheap-module-eval-source-map');
444
+ }
445
+ };
446
+ }
447
+
448
+ // v3
449
+ tools: {
450
+ bundlerChain: (chain, { env }) => {
451
+ if (env === 'development') {
452
+ chain.devtool('cheap-module-eval-source-map');
453
+ }
454
+ };
455
+ }
456
+ ```
457
+
458
+ ### tools.webpack
459
+
460
+ **Change**: This configuration has been deprecated, please migrate webpack configuration to `tools.rspack`.
461
+
462
+ ```typescript
463
+ // v2
464
+ tools: {
465
+ webpack: (chain, { env }) => {
466
+ {
467
+ /* configuration */
468
+ }
469
+ };
470
+ }
471
+
472
+ // v3
473
+ tools: {
474
+ rspack: (chain, { env }) => {
475
+ {
476
+ /* configuration */
477
+ }
478
+ };
479
+ }
480
+ ```
481
+
482
+ ## source
483
+
484
+ ### source.resolveMainFields
485
+
486
+ **Change**: This configuration has been deprecated, use `resolve.mainFields` instead.
487
+
488
+ **Migration Example**:
489
+
490
+ ```typescript
491
+ // v2
492
+ source: {
493
+ resolveMainFields: ['custom', 'module', 'main'];
494
+ }
495
+
496
+ // v3
497
+ resolve: {
498
+ mainFields: ['custom', 'module', 'main'];
499
+ }
500
+ ```
501
+
502
+ ### source.resolveExtensionPrefix
503
+
504
+ **Change**: This configuration has been deprecated, use `resolve.extensions` instead.
505
+
506
+ **Migration Example**:
507
+
508
+ ```typescript
509
+ // v2
510
+ source: {
511
+ resolveExtensionPrefix: ['.ts', '.tsx', '.js'];
512
+ }
513
+
514
+ // v3
515
+ resolve: {
516
+ extensions: ['.ts', '.tsx', '.js'];
517
+ }
518
+ ```
519
+
520
+ ### source.moduleScopes
521
+
522
+ **Change**: This configuration has been deprecated, remove it directly.
523
+
524
+ ### source.enableCustomEntry
525
+
526
+ **Change**: This configuration has been deprecated, remove it directly.
527
+
528
+ ### source.disableEntryDirs
529
+
530
+ **Change**: This configuration has been deprecated, remove it directly.
531
+
532
+ ### source.alias
533
+
534
+ **Change**: This configuration no longer applies to code in custom Server and BFF. Aliases configured for server-side code need to be migrated to tsconfig.json.
535
+
536
+ **Migration Example**:
537
+
538
+ ```typescript
539
+ // v2
540
+ source: {
541
+ alias: {
542
+ '@api/*': './api/*',
543
+ },
544
+ },
545
+
546
+ // v3 tsconfig.json
547
+ {
548
+ "compilerOptions": {
549
+ "paths": {
550
+ "@api/*": ["./api/*"]
551
+ },
552
+ },
553
+ }
554
+ ```
555
+
556
+ ### server.routes
557
+
558
+ **Change**: The default route has changed from `main` to `index`. If `index` exists in the `server.routes` configuration, migrate as follows.
559
+
560
+ **Migration Example**:
561
+
562
+ ```typescript
563
+ // v2
564
+ server: {
565
+ routes: {
566
+ main: '/new',
567
+ },
568
+ },
569
+
570
+ // v3
571
+ server: {
572
+ routes: {
573
+ index: '/new',
574
+ },
575
+ },
576
+ ```
577
+
578
+ ## output
579
+
580
+ ### output.overrideBrowserslist
581
+
582
+ **Change**: Needs to be handled based on the project's existing configuration.
583
+
584
+ **Migration Steps**:
585
+
586
+ 1. Check if there is a `.browserslistrc` file in the project
587
+ 2. Check if `output.overrideBrowserslist` is configured in `modern.config.[ts|js]`
588
+ 3. Check if browserslist is configured in package.json
589
+
590
+ If none of the above exist, create a `.browserslistrc` file with the following content for browsers supporting ES6:
591
+
592
+ ```yaml title=".browserslistrc"
593
+ chrome >= 87
594
+ edge >= 88
595
+ firefox >= 78
596
+ safari >= 14
597
+ ```
598
+
599
+ ### output.enableAssetFallback
600
+
601
+ **Change**: This configuration has been deprecated, comment it out and add a note.
602
+
603
+ ```typescript
604
+ // This configuration has been deprecated, if you encounter issues please contact oncall for resolution
605
+ // output: {
606
+ // enableAssetFallback: true,
607
+ // },
608
+ ```
609
+
610
+ ### output.cssModuleLocalIdentName
611
+
612
+ **Change**: This configuration has been deprecated, use `output.cssModules.localIdentName` instead.
613
+
614
+ **Migration Example**:
615
+
616
+ ```typescript
617
+ // v2
618
+ export default {
619
+ output: {
620
+ cssModuleLocalIdentName: '[path][name]__[local]-[hash:base64:6]',
621
+ },
622
+ };
623
+
624
+ // v3
625
+ export default {
626
+ output: {
627
+ cssModules: {
628
+ localIdentName: '[path][name]__[local]-[hash:base64:6]',
629
+ },
630
+ },
631
+ };
632
+ ```
633
+
634
+ ### output.disableCssExtract
635
+
636
+ **Change**: This configuration has been deprecated, use `output.injectStyles` instead.
637
+
638
+ **Migration Example**:
639
+
640
+ ```typescript
641
+ // v2
642
+ export default {
643
+ output: {
644
+ disableCssExtract: true,
645
+ },
646
+ };
647
+
648
+ // v3
649
+ export default {
650
+ output: {
651
+ injectStyles: true,
652
+ },
653
+ };
654
+ ```
655
+
656
+ ### output.disableFilenameHash
657
+
658
+ **Change**: This configuration has been deprecated, use `output.filenameHash` instead.
659
+
660
+ **Migration Example**:
661
+
662
+ ```typescript
663
+ // v2
664
+ export default {
665
+ output: {
666
+ disableFilenameHash: true,
667
+ },
668
+ };
669
+
670
+ // v3
671
+ export default {
672
+ output: {
673
+ filenameHash: false,
674
+ },
675
+ };
676
+ ```
677
+
678
+ ### output.disableMinimize
679
+
680
+ **Change**: This configuration has been deprecated, use `output.minify` instead.
681
+
682
+ **Migration Example**:
683
+
684
+ ```typescript
685
+ // v2
686
+ export default {
687
+ output: {
688
+ disableMinimize: true,
689
+ },
690
+ };
691
+
692
+ // v3
693
+ export default {
694
+ output: {
695
+ minify: false,
696
+ },
697
+ };
698
+ ```
699
+
700
+ ### output.disableSourceMap
701
+
702
+ **Change**: This configuration has been deprecated, use `output.sourceMap` instead.
703
+
704
+ **Migration Example**:
705
+
706
+ ```typescript
707
+ // v2
708
+ export default {
709
+ output: {
710
+ disableSourceMap: true,
711
+ },
712
+ };
713
+
714
+ // v3
715
+ export default {
716
+ output: {
717
+ sourceMap: false,
718
+ },
719
+ };
720
+ ```
721
+
722
+ ### output.enableInlineScripts
723
+
724
+ **Change**: This configuration has been deprecated, use `output.inlineScripts` instead.
725
+
726
+ **Migration Example**:
727
+
728
+ ```typescript
729
+ // v2
730
+ export default {
731
+ output: {
732
+ enableInlineScripts: true,
733
+ },
734
+ };
735
+
736
+ // v3
737
+ export default {
738
+ output: {
739
+ inlineScripts: true,
740
+ },
741
+ };
742
+ ```
743
+
744
+ ### output.enableInlineStyles
745
+
746
+ **Change**: This configuration has been deprecated, use `output.inlineStyles` instead.
747
+
748
+ **Migration Example**:
749
+
750
+ ```typescript
751
+ // v2
752
+ export default {
753
+ output: {
754
+ enableInlineStyles: true,
755
+ },
756
+ };
757
+
758
+ // v3
759
+ export default {
760
+ output: {
761
+ inlineStyles: true,
762
+ },
763
+ };
764
+ ```
765
+
766
+ ### output.enableLatestDecorators
767
+
768
+ **Change**: This configuration has been deprecated, use `source.decorators` instead.
769
+
770
+ **Migration Example**:
771
+
772
+ ```typescript
773
+ // v2
774
+ export default {
775
+ output: {
776
+ enableLatestDecorators: true,
777
+ },
778
+ };
779
+
780
+ // v3
781
+ export default {
782
+ source: {
783
+ decorators: {
784
+ version: '2022-03',
785
+ },
786
+ },
787
+ };
788
+ ```
789
+
790
+ ### output.disableNodePolyfill
791
+
792
+ **Change**: This configuration has been deprecated, use `pluginNodePolyfill` plugin instead.
793
+
794
+ **Migration Example**:
795
+
796
+ ```typescript
797
+ // v2
798
+ export default {
799
+ output: {
800
+ disableNodePolyfill: false,
801
+ },
802
+ };
803
+
804
+ // v3
805
+ import { pluginNodePolyfill } from '@rsbuild/plugin-node-polyfill';
806
+ export default {
807
+ builderPlugins: [pluginNodePolyfill()],
808
+ };
809
+ ```
810
+
811
+ ## plugins
812
+
813
+ ### app-tools plugin
814
+
815
+ **Change**: This plugin does not require any parameters.
816
+
817
+ **Migration Example**:
818
+
819
+ ```typescript
820
+ // v2
821
+ plugins: [
822
+ appTools({
823
+ bundler: 'rspack'
824
+ })
825
+ ],
826
+
827
+ // v3
828
+ plugins: [
829
+ appTools()
830
+ ],
831
+ ```
832
+
833
+ ## security
834
+
835
+ ### security.sri
836
+
837
+ **Change**: `security.sri.hashLoading` is no longer needed and can be removed directly.
838
+
839
+ ## runtime
840
+
841
+ ### runtime.router
842
+
843
+ **Change**: No longer needed, can be removed directly. This configuration has been moved to the router configuration in modern.runtime.ts.
844
+
845
+ **Migration Example**:
846
+
847
+ ```typescript
848
+ // v2
849
+ // modern.config.ts
850
+ export default {
851
+ runtime: {
852
+ router: {
853
+ // Router configuration
854
+ },
855
+ },
856
+ };
857
+
858
+ // v3
859
+ // modern.runtime.ts
860
+ import { defineRuntimeConfig } from '@modern-js/runtime';
861
+
862
+ export default defineRuntimeConfig({
863
+ router: {
864
+ // Router configuration
865
+ },
866
+ });
867
+ ```
868
+
869
+ ### runtime.state
870
+
871
+ **Change**: This configuration has been deprecated, it is recommended to use a third-party state management library.
872
+
873
+ ### runtime.masterApp
874
+
875
+ **Change**: This configuration has been deprecated, move this configuration to the masterApp configuration in modern.runtime.ts.
876
+
877
+ **Migration Example**:
878
+
879
+ ```typescript
880
+ // v2
881
+ // modern.config.ts
882
+ export default {
883
+ runtime: {
884
+ masterApp: {
885
+ apps: [
886
+ {
887
+ name: 'Table',
888
+ entry: 'http://localhost:8081',
889
+ },
890
+ {
891
+ name: 'Dashboard',
892
+ entry: 'http://localhost:8082',
893
+ },
894
+ ],
895
+ },
896
+ },
897
+ };
898
+
899
+ // v3
900
+ // modern.runtime.ts
901
+ import { defineRuntimeConfig } from '@modern-js/runtime';
902
+
903
+ export default defineRuntimeConfig({
904
+ masterApp: {
905
+ apps: [
906
+ {
907
+ name: 'Table',
908
+ entry: 'http://localhost:8081',
909
+ },
910
+ {
911
+ name: 'Dashboard',
912
+ entry: 'http://localhost:8082',
913
+ },
914
+ ],
915
+ },
916
+ });
917
+ ```
918
+
919
+ ## performance
920
+
921
+ ### performance.bundleAnalyze
922
+
923
+ **Change**: This configuration has been deprecated, it is recommended to use [Rsdoctor](https://v2.rsbuild.rs/guide/debug/rsdoctor) to analyze bundle size.
924
+
925
+ ### performance.transformLodash
926
+
927
+ **Change**: No longer needed, can be removed directly.
928
+
929
+ **Migration Example**:
930
+
931
+ ```typescript
932
+ // v2
933
+ export default {
934
+ performance: {
935
+ transformLodash: true,
936
+ },
937
+ };
938
+
939
+ // v3 - Remove this configuration directly
940
+ export default {
941
+ // Configuration...
942
+ };
943
+ ```
944
+
945
+ ## experiments
946
+
947
+ ### experiments.lazyCompilation
948
+
949
+ **Change**: This configuration has been deprecated, changed to `dev.lazyCompilation`.
950
+
951
+ **Migration Example**:
952
+
953
+ ```typescript
954
+ // v2
955
+ experiments: {
956
+ lazyCompilation: true;
957
+ }
958
+
959
+ // v3
960
+ dev: {
961
+ lazyCompilation: true;
962
+ }
963
+ ```