@modern-js/main-doc 2.59.0 → 2.60.1-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (414) hide show
  1. package/docs/en/_meta.json +10 -5
  2. package/docs/en/apis/app/hooks/api/lambda.mdx +4 -48
  3. package/docs/en/apis/app/hooks/api/middleware.mdx +11 -0
  4. package/docs/en/community/blog/v2-release-note.mdx +1 -1
  5. package/docs/en/community/contributing-guide.mdx +0 -1
  6. package/docs/en/components/builder.mdx +3 -0
  7. package/docs/en/components/bundler.mdx +3 -0
  8. package/docs/en/components/enable-bff.mdx +19 -2
  9. package/docs/en/components/enableSwc.mdx +17 -0
  10. package/docs/en/components/esbuild.mdx +3 -0
  11. package/docs/en/components/extend-bff-function.mdx +5 -0
  12. package/docs/en/components/micro-frontend.mdx +6 -0
  13. package/docs/en/components/module-federation.mdx +7 -0
  14. package/docs/en/components/nodeVersion.mdx +26 -0
  15. package/docs/en/components/other-plugins.mdx +0 -0
  16. package/docs/en/components/output-asset-prefix-extend.mdx +0 -0
  17. package/docs/en/components/output-polyfill-extend.mdx +0 -0
  18. package/docs/en/components/prerequisites.mdx +1 -1
  19. package/docs/en/components/rsbuild-config-tooltip.mdx +5 -0
  20. package/docs/en/components/rsbuild.mdx +3 -0
  21. package/docs/en/components/rspack.mdx +3 -0
  22. package/docs/en/components/rspackPrecautions.mdx +6 -0
  23. package/docs/en/components/rspackTip.mdx +7 -0
  24. package/docs/en/components/swc.mdx +3 -0
  25. package/docs/en/configure/app/auto-load-plugin.mdx +4 -0
  26. package/docs/en/configure/app/dev/asset-prefix.mdx +12 -2
  27. package/docs/en/configure/app/dev/before-start-url.mdx +14 -2
  28. package/docs/en/configure/app/dev/client.mdx +20 -16
  29. package/docs/en/configure/app/dev/hmr.mdx +8 -2
  30. package/docs/en/configure/app/dev/host.mdx +15 -2
  31. package/docs/en/configure/app/dev/https.mdx +71 -2
  32. package/docs/en/configure/app/dev/live-reload.mdx +3 -15
  33. package/docs/en/configure/app/dev/port.mdx +18 -2
  34. package/docs/en/configure/app/dev/progress-bar.mdx +17 -2
  35. package/docs/en/configure/app/dev/setup-middlewares.mdx +25 -39
  36. package/docs/en/configure/app/dev/start-url.mdx +46 -2
  37. package/docs/en/configure/app/dev/watch-files.mdx +5 -39
  38. package/docs/en/configure/app/dev/write-to-disk.mdx +4 -27
  39. package/docs/en/configure/app/experiments/lazy-compilation.mdx +84 -2
  40. package/docs/en/configure/app/experiments/source-build.mdx +28 -3
  41. package/docs/en/configure/app/html/app-icon.mdx +48 -2
  42. package/docs/en/configure/app/html/crossorigin.mdx +8 -2
  43. package/docs/en/configure/app/html/disable-html-folder.mdx +35 -2
  44. package/docs/en/configure/app/html/favicon-by-entries.mdx +29 -2
  45. package/docs/en/configure/app/html/favicon.mdx +14 -2
  46. package/docs/en/configure/app/html/inject-by-entries.mdx +29 -2
  47. package/docs/en/configure/app/html/inject.mdx +8 -2
  48. package/docs/en/configure/app/html/meta-by-entries.mdx +41 -2
  49. package/docs/en/configure/app/html/meta.mdx +22 -2
  50. package/docs/en/configure/app/html/mount-id.mdx +8 -2
  51. package/docs/en/configure/app/html/script-loading.mdx +8 -2
  52. package/docs/en/configure/app/html/tags-by-entries.mdx +37 -2
  53. package/docs/en/configure/app/html/tags.mdx +13 -2
  54. package/docs/en/configure/app/html/template-by-entries.mdx +26 -2
  55. package/docs/en/configure/app/html/template-parameters-by-entries.mdx +28 -2
  56. package/docs/en/configure/app/html/template-parameters.mdx +31 -2
  57. package/docs/en/configure/app/html/template.mdx +8 -2
  58. package/docs/en/configure/app/html/title-by-entries.mdx +30 -2
  59. package/docs/en/configure/app/html/title.mdx +16 -2
  60. package/docs/en/configure/app/output/asset-prefix.mdx +12 -2
  61. package/docs/en/configure/app/output/assets-retry.mdx +72 -2
  62. package/docs/en/configure/app/output/charset.mdx +8 -2
  63. package/docs/en/configure/app/output/clean-dist-path.mdx +13 -2
  64. package/docs/en/configure/app/output/convert-to-rem.mdx +76 -2
  65. package/docs/en/configure/app/output/copy.mdx +5 -2
  66. package/docs/en/configure/app/output/css-module-local-ident-name.mdx +14 -2
  67. package/docs/en/configure/app/output/css-modules.mdx +46 -2
  68. package/docs/en/configure/app/output/data-uri-limit.mdx +24 -2
  69. package/docs/en/configure/app/output/disable-css-extract.mdx +9 -2
  70. package/docs/en/configure/app/output/disable-css-module-extension.mdx +52 -2
  71. package/docs/en/configure/app/output/disable-filename-hash.mdx +9 -2
  72. package/docs/en/configure/app/output/disable-inline-runtime-chunk.mdx +38 -2
  73. package/docs/en/configure/app/output/disable-minimize.mdx +7 -2
  74. package/docs/en/configure/app/output/disable-source-map.mdx +24 -2
  75. package/docs/en/configure/app/output/disable-svgr.mdx +13 -2
  76. package/docs/en/configure/app/output/disable-ts-checker.mdx +46 -2
  77. package/docs/en/configure/app/output/dist-path.mdx +39 -2
  78. package/docs/en/configure/app/output/enable-asset-fallback.mdx +29 -2
  79. package/docs/en/configure/app/output/enable-asset-manifest.mdx +33 -2
  80. package/docs/en/configure/app/output/enable-css-module-tsdeclaration.mdx +25 -2
  81. package/docs/en/configure/app/output/enable-inline-scripts.mdx +15 -2
  82. package/docs/en/configure/app/output/enable-inline-styles.mdx +15 -2
  83. package/docs/en/configure/app/output/enable-latest-decorators.mdx +7 -2
  84. package/docs/en/configure/app/output/externals.mdx +18 -2
  85. package/docs/en/configure/app/output/filename-hash.mdx +3 -27
  86. package/docs/en/configure/app/output/filename.mdx +47 -2
  87. package/docs/en/configure/app/output/inject-styles.mdx +15 -0
  88. package/docs/en/configure/app/output/inline-scripts.mdx +34 -0
  89. package/docs/en/configure/app/output/inline-styles.mdx +34 -0
  90. package/docs/en/configure/app/output/legal-comments.mdx +16 -2
  91. package/docs/en/configure/app/output/minify.mdx +27 -0
  92. package/docs/en/configure/app/output/override-browserslist.mdx +18 -2
  93. package/docs/en/configure/app/output/polyfill.mdx +12 -2
  94. package/docs/en/configure/app/output/source-map.mdx +30 -0
  95. package/docs/en/configure/app/output/ssg.mdx +20 -17
  96. package/docs/en/configure/app/output/svg-default-export.mdx +27 -2
  97. package/docs/en/configure/app/performance/build-cache.mdx +78 -2
  98. package/docs/en/configure/app/performance/bundle-analyze.mdx +18 -2
  99. package/docs/en/configure/app/performance/chunk-split.mdx +38 -2
  100. package/docs/en/configure/app/performance/dns-prefetch.mdx +13 -2
  101. package/docs/en/configure/app/performance/preconnect.mdx +14 -2
  102. package/docs/en/configure/app/performance/prefetch.mdx +19 -2
  103. package/docs/en/configure/app/performance/preload.mdx +21 -2
  104. package/docs/en/configure/app/performance/print-file-size.mdx +38 -2
  105. package/docs/en/configure/app/performance/profile.mdx +8 -2
  106. package/docs/en/configure/app/performance/remove-console.mdx +8 -2
  107. package/docs/en/configure/app/performance/remove-moment-locale.mdx +8 -2
  108. package/docs/en/configure/app/performance/transform-lodash.mdx +42 -2
  109. package/docs/en/configure/app/plugins.mdx +3 -3
  110. package/docs/en/configure/app/security/check-syntax.mdx +66 -2
  111. package/docs/en/configure/app/security/nonce.mdx +13 -2
  112. package/docs/en/configure/app/security/sri.mdx +19 -2
  113. package/docs/en/configure/app/server/port.mdx +5 -0
  114. package/docs/en/configure/app/server/ssr.mdx +10 -9
  115. package/docs/en/configure/app/source/alias-strategy.mdx +8 -2
  116. package/docs/en/configure/app/source/alias.mdx +17 -2
  117. package/docs/en/configure/app/source/config-dir.mdx +1 -1
  118. package/docs/en/configure/app/source/decorators.mdx +8 -21
  119. package/docs/en/configure/app/source/define.mdx +14 -2
  120. package/docs/en/configure/app/source/enable-async-entry.mdx +1 -1
  121. package/docs/en/configure/app/source/entries-dir.mdx +1 -1
  122. package/docs/en/configure/app/source/exclude.mdx +8 -2
  123. package/docs/en/configure/app/source/global-vars.mdx +103 -2
  124. package/docs/en/configure/app/source/include.mdx +19 -2
  125. package/docs/en/configure/app/source/mainEntryName.mdx +1 -1
  126. package/docs/en/configure/app/source/module-scopes.mdx +62 -2
  127. package/docs/en/configure/app/source/pre-entry.mdx +8 -2
  128. package/docs/en/configure/app/source/resolve-extension-prefix.mdx +48 -2
  129. package/docs/en/configure/app/source/resolve-main-fields.mdx +39 -2
  130. package/docs/en/configure/app/source/transform-import.mdx +56 -2
  131. package/docs/en/configure/app/tools/autoprefixer.mdx +41 -2
  132. package/docs/en/configure/app/tools/babel.mdx +218 -2
  133. package/docs/en/configure/app/tools/bundler-chain.mdx +23 -2
  134. package/docs/en/configure/app/tools/css-extract.mdx +31 -2
  135. package/docs/en/configure/app/tools/css-loader.mdx +14 -2
  136. package/docs/en/configure/app/tools/dev-server.mdx +435 -2
  137. package/docs/en/configure/app/tools/esbuild.mdx +2 -2
  138. package/docs/en/configure/app/tools/html-plugin.mdx +21 -2
  139. package/docs/en/configure/app/tools/less.mdx +78 -2
  140. package/docs/en/configure/app/tools/minify-css.mdx +50 -2
  141. package/docs/en/configure/app/tools/postcss.mdx +30 -2
  142. package/docs/en/configure/app/tools/pug.mdx +47 -2
  143. package/docs/en/configure/app/tools/rspack.mdx +8 -2
  144. package/docs/en/configure/app/tools/sass.mdx +75 -2
  145. package/docs/en/configure/app/tools/style-loader.mdx +8 -2
  146. package/docs/en/configure/app/tools/styled-components.mdx +48 -2
  147. package/docs/en/configure/app/tools/swc.mdx +34 -3
  148. package/docs/en/configure/app/tools/terser.mdx +49 -2
  149. package/docs/en/configure/app/tools/ts-checker.mdx +49 -2
  150. package/docs/en/configure/app/tools/ts-loader.mdx +63 -2
  151. package/docs/en/configure/app/tools/webpack-chain.mdx +239 -2
  152. package/docs/en/configure/app/tools/webpack.mdx +295 -2
  153. package/docs/en/guides/_meta.json +0 -5
  154. package/docs/en/guides/advanced-features/_meta.json +7 -5
  155. package/docs/en/guides/advanced-features/bff/_meta.json +1 -1
  156. package/docs/en/guides/advanced-features/bff/extend-server.mdx +154 -0
  157. package/docs/en/guides/advanced-features/bff/frameworks.mdx +52 -123
  158. package/docs/en/guides/advanced-features/bff/function.mdx +108 -80
  159. package/docs/en/guides/advanced-features/bff/sdk.mdx +40 -51
  160. package/docs/en/guides/advanced-features/build-performance.mdx +6 -21
  161. package/docs/en/guides/advanced-features/page-performance/_meta.json +1 -0
  162. package/docs/en/guides/advanced-features/rspack-start.mdx +2 -2
  163. package/docs/en/guides/basic-features/css/css-modules.mdx +2 -2
  164. package/docs/en/guides/basic-features/output-files.mdx +1 -1
  165. package/docs/en/guides/basic-features/render/ssg.mdx +1 -1
  166. package/docs/en/guides/basic-features/render/streaming-ssr.mdx +1 -1
  167. package/docs/en/guides/basic-features/routes.mdx +2 -3
  168. package/docs/en/guides/basic-features/static-assets.mdx +1 -1
  169. package/docs/en/guides/concept/builder.mdx +1 -1
  170. package/docs/en/guides/deprecated.md +2 -0
  171. package/docs/en/guides/get-started/glossary.mdx +7 -7
  172. package/docs/en/guides/get-started/quick-start.mdx +1 -1
  173. package/docs/en/guides/topic-detail/_meta.json +0 -6
  174. package/docs/en/guides/topic-detail/micro-frontend/c01-introduction.mdx +1 -1
  175. package/docs/en/guides/troubleshooting/builder.mdx +2 -2
  176. package/docs/en/plugin/_meta.json +19 -0
  177. package/docs/en/plugin/cli-plugins/_meta.json +1 -0
  178. package/docs/en/plugin/cli-plugins/plugin-bff.mdx +5 -0
  179. package/docs/en/plugin/cli-plugins/plugin-ssg.mdx +5 -0
  180. package/docs/en/{guides/rsbuild-plugins → plugin/cli-plugins}/plugin-swc.mdx +11 -4
  181. package/docs/en/plugin/cli-plugins/plugin-tailwind.mdx +5 -0
  182. package/docs/en/plugin/cli-plugins.mdx +6 -0
  183. package/docs/en/{guides/advanced-features/rsbuild-plugin.mdx → plugin/introduction.mdx} +34 -9
  184. package/docs/en/{guides/topic-detail/framework-plugin → plugin/plugin-system}/extend.mdx +1 -1
  185. package/docs/en/{guides/topic-detail/framework-plugin → plugin/plugin-system}/implement.mdx +3 -3
  186. package/docs/en/{guides/topic-detail/framework-plugin → plugin/plugin-system}/plugin-api.mdx +2 -2
  187. package/docs/en/plugin/rsbuild-plugins/_meta.json +1 -0
  188. package/docs/en/{guides → plugin}/rsbuild-plugins/plugin-esbuild.mdx +4 -4
  189. package/docs/en/plugin/rsbuild-plugins.mdx +3 -0
  190. package/docs/zh/_meta.json +10 -5
  191. package/docs/zh/apis/app/hooks/api/lambda.mdx +5 -48
  192. package/docs/zh/apis/app/hooks/api/middleware.mdx +11 -0
  193. package/docs/zh/community/blog/v2-release-note.mdx +1 -1
  194. package/docs/zh/community/contributing-guide.mdx +0 -1
  195. package/docs/zh/components/builder.mdx +3 -0
  196. package/docs/zh/components/bundler.mdx +4 -0
  197. package/docs/zh/components/enable-bff.mdx +19 -2
  198. package/docs/zh/components/enableSwc.mdx +17 -0
  199. package/docs/zh/components/esbuild.mdx +3 -0
  200. package/docs/zh/components/extend-bff-function.mdx +5 -0
  201. package/docs/zh/components/micro-frontend.mdx +6 -0
  202. package/docs/zh/components/module-federation.mdx +7 -0
  203. package/docs/zh/components/nodeVersion.mdx +28 -0
  204. package/docs/zh/components/other-plugins.mdx +0 -0
  205. package/docs/zh/components/output-asset-prefix-extend.mdx +0 -0
  206. package/docs/zh/components/output-polyfill-extend.mdx +0 -0
  207. package/docs/zh/components/prerequisites.mdx +1 -1
  208. package/docs/zh/components/rsbuild-config-tooltip.mdx +5 -0
  209. package/docs/zh/components/rsbuild.mdx +3 -0
  210. package/docs/zh/components/rspack.mdx +3 -0
  211. package/docs/zh/components/rspackPrecautions.mdx +6 -0
  212. package/docs/zh/components/rspackTip.mdx +7 -0
  213. package/docs/zh/components/swc.mdx +3 -0
  214. package/docs/zh/configure/app/auto-load-plugin.mdx +4 -0
  215. package/docs/zh/configure/app/dev/asset-prefix.mdx +12 -2
  216. package/docs/zh/configure/app/dev/before-start-url.mdx +14 -2
  217. package/docs/zh/configure/app/dev/client.mdx +20 -16
  218. package/docs/zh/configure/app/dev/hmr.mdx +8 -2
  219. package/docs/zh/configure/app/dev/host.mdx +15 -2
  220. package/docs/zh/configure/app/dev/https.mdx +72 -2
  221. package/docs/zh/configure/app/dev/live-reload.mdx +3 -15
  222. package/docs/zh/configure/app/dev/port.mdx +18 -2
  223. package/docs/zh/configure/app/dev/progress-bar.mdx +17 -2
  224. package/docs/zh/configure/app/dev/setup-middlewares.mdx +26 -39
  225. package/docs/zh/configure/app/dev/start-url.mdx +47 -2
  226. package/docs/zh/configure/app/dev/watch-files.mdx +5 -39
  227. package/docs/zh/configure/app/dev/write-to-disk.mdx +3 -26
  228. package/docs/zh/configure/app/experiments/lazy-compilation.mdx +84 -2
  229. package/docs/zh/configure/app/experiments/source-build.mdx +29 -2
  230. package/docs/zh/configure/app/html/app-icon.mdx +48 -2
  231. package/docs/zh/configure/app/html/crossorigin.mdx +9 -2
  232. package/docs/zh/configure/app/html/disable-html-folder.mdx +34 -2
  233. package/docs/zh/configure/app/html/favicon-by-entries.mdx +30 -2
  234. package/docs/zh/configure/app/html/favicon.mdx +15 -2
  235. package/docs/zh/configure/app/html/inject-by-entries.mdx +30 -2
  236. package/docs/zh/configure/app/html/inject.mdx +8 -2
  237. package/docs/zh/configure/app/html/meta-by-entries.mdx +41 -2
  238. package/docs/zh/configure/app/html/meta.mdx +22 -2
  239. package/docs/zh/configure/app/html/mount-id.mdx +8 -2
  240. package/docs/zh/configure/app/html/script-loading.mdx +8 -2
  241. package/docs/zh/configure/app/html/tags-by-entries.mdx +37 -2
  242. package/docs/zh/configure/app/html/tags.mdx +13 -2
  243. package/docs/zh/configure/app/html/template-by-entries.mdx +26 -2
  244. package/docs/zh/configure/app/html/template-parameters-by-entries.mdx +29 -2
  245. package/docs/zh/configure/app/html/template-parameters.mdx +31 -2
  246. package/docs/zh/configure/app/html/template.mdx +8 -2
  247. package/docs/zh/configure/app/html/title-by-entries.mdx +30 -2
  248. package/docs/zh/configure/app/html/title.mdx +16 -2
  249. package/docs/zh/configure/app/output/asset-prefix.mdx +12 -2
  250. package/docs/zh/configure/app/output/assets-retry.mdx +72 -2
  251. package/docs/zh/configure/app/output/charset.mdx +8 -2
  252. package/docs/zh/configure/app/output/clean-dist-path.mdx +13 -2
  253. package/docs/zh/configure/app/output/convert-to-rem.mdx +77 -2
  254. package/docs/zh/configure/app/output/copy.mdx +6 -2
  255. package/docs/zh/configure/app/output/css-module-local-ident-name.mdx +14 -2
  256. package/docs/zh/configure/app/output/css-modules.mdx +46 -2
  257. package/docs/zh/configure/app/output/data-uri-limit.mdx +24 -2
  258. package/docs/zh/configure/app/output/disable-css-extract.mdx +9 -2
  259. package/docs/zh/configure/app/output/disable-css-module-extension.mdx +52 -2
  260. package/docs/zh/configure/app/output/disable-filename-hash.mdx +9 -2
  261. package/docs/zh/configure/app/output/disable-inline-runtime-chunk.mdx +38 -2
  262. package/docs/zh/configure/app/output/disable-minimize.mdx +7 -2
  263. package/docs/zh/configure/app/output/disable-source-map.mdx +24 -2
  264. package/docs/zh/configure/app/output/disable-svgr.mdx +14 -2
  265. package/docs/zh/configure/app/output/disable-ts-checker.mdx +46 -2
  266. package/docs/zh/configure/app/output/dist-path.mdx +39 -2
  267. package/docs/zh/configure/app/output/enable-asset-fallback.mdx +29 -2
  268. package/docs/zh/configure/app/output/enable-asset-manifest.mdx +33 -2
  269. package/docs/zh/configure/app/output/enable-css-module-tsdeclaration.mdx +25 -2
  270. package/docs/zh/configure/app/output/enable-inline-scripts.mdx +15 -2
  271. package/docs/zh/configure/app/output/enable-inline-styles.mdx +15 -2
  272. package/docs/zh/configure/app/output/enable-latest-decorators.mdx +7 -2
  273. package/docs/zh/configure/app/output/externals.mdx +18 -2
  274. package/docs/zh/configure/app/output/filename-hash.mdx +4 -27
  275. package/docs/zh/configure/app/output/filename.mdx +47 -2
  276. package/docs/zh/configure/app/output/inject-styles.mdx +15 -0
  277. package/docs/zh/configure/app/output/inline-scripts.mdx +34 -0
  278. package/docs/zh/configure/app/output/inline-styles.mdx +34 -0
  279. package/docs/zh/configure/app/output/legal-comments.mdx +16 -2
  280. package/docs/zh/configure/app/output/minify.mdx +27 -0
  281. package/docs/zh/configure/app/output/override-browserslist.mdx +20 -2
  282. package/docs/zh/configure/app/output/polyfill.mdx +12 -2
  283. package/docs/zh/configure/app/output/source-map.mdx +30 -0
  284. package/docs/zh/configure/app/output/ssg.mdx +19 -15
  285. package/docs/zh/configure/app/output/svg-default-export.mdx +27 -2
  286. package/docs/zh/configure/app/performance/build-cache.mdx +77 -2
  287. package/docs/zh/configure/app/performance/bundle-analyze.mdx +18 -2
  288. package/docs/zh/configure/app/performance/chunk-split.mdx +38 -2
  289. package/docs/zh/configure/app/performance/dns-prefetch.mdx +13 -2
  290. package/docs/zh/configure/app/performance/preconnect.mdx +14 -2
  291. package/docs/zh/configure/app/performance/prefetch.mdx +19 -2
  292. package/docs/zh/configure/app/performance/preload.mdx +21 -2
  293. package/docs/zh/configure/app/performance/print-file-size.mdx +38 -2
  294. package/docs/zh/configure/app/performance/profile.mdx +8 -2
  295. package/docs/zh/configure/app/performance/remove-console.mdx +8 -2
  296. package/docs/zh/configure/app/performance/remove-moment-locale.mdx +8 -2
  297. package/docs/zh/configure/app/performance/transform-lodash.mdx +42 -2
  298. package/docs/zh/configure/app/plugins.mdx +3 -3
  299. package/docs/zh/configure/app/security/check-syntax.mdx +66 -2
  300. package/docs/zh/configure/app/security/nonce.mdx +13 -2
  301. package/docs/zh/configure/app/security/sri.mdx +19 -2
  302. package/docs/zh/configure/app/server/port.mdx +5 -0
  303. package/docs/zh/configure/app/server/ssr.mdx +10 -9
  304. package/docs/zh/configure/app/source/alias-strategy.mdx +8 -2
  305. package/docs/zh/configure/app/source/alias.mdx +17 -2
  306. package/docs/zh/configure/app/source/config-dir.mdx +1 -1
  307. package/docs/zh/configure/app/source/decorators.mdx +8 -20
  308. package/docs/zh/configure/app/source/define.mdx +14 -2
  309. package/docs/zh/configure/app/source/enable-async-entry.mdx +1 -1
  310. package/docs/zh/configure/app/source/entries-dir.mdx +1 -1
  311. package/docs/zh/configure/app/source/exclude.mdx +8 -2
  312. package/docs/zh/configure/app/source/global-vars.mdx +102 -2
  313. package/docs/zh/configure/app/source/include.mdx +19 -2
  314. package/docs/zh/configure/app/source/mainEntryName.mdx +1 -1
  315. package/docs/zh/configure/app/source/module-scopes.mdx +62 -2
  316. package/docs/zh/configure/app/source/pre-entry.mdx +8 -2
  317. package/docs/zh/configure/app/source/resolve-extension-prefix.mdx +50 -2
  318. package/docs/zh/configure/app/source/resolve-main-fields.mdx +39 -2
  319. package/docs/zh/configure/app/source/transform-import.mdx +56 -2
  320. package/docs/zh/configure/app/tools/autoprefixer.mdx +41 -2
  321. package/docs/zh/configure/app/tools/babel.mdx +218 -2
  322. package/docs/zh/configure/app/tools/bundler-chain.mdx +26 -2
  323. package/docs/zh/configure/app/tools/css-extract.mdx +28 -2
  324. package/docs/zh/configure/app/tools/css-loader.mdx +15 -2
  325. package/docs/zh/configure/app/tools/dev-server.mdx +435 -2
  326. package/docs/zh/configure/app/tools/esbuild.mdx +2 -2
  327. package/docs/zh/configure/app/tools/html-plugin.mdx +21 -2
  328. package/docs/zh/configure/app/tools/less.mdx +79 -2
  329. package/docs/zh/configure/app/tools/minify-css.mdx +50 -2
  330. package/docs/zh/configure/app/tools/postcss.mdx +31 -2
  331. package/docs/zh/configure/app/tools/pug.mdx +47 -2
  332. package/docs/zh/configure/app/tools/rspack.mdx +8 -2
  333. package/docs/zh/configure/app/tools/sass.mdx +73 -2
  334. package/docs/zh/configure/app/tools/style-loader.mdx +8 -2
  335. package/docs/zh/configure/app/tools/styled-components.mdx +47 -2
  336. package/docs/zh/configure/app/tools/swc.mdx +34 -3
  337. package/docs/zh/configure/app/tools/terser.mdx +49 -2
  338. package/docs/zh/configure/app/tools/ts-checker.mdx +49 -2
  339. package/docs/zh/configure/app/tools/ts-loader.mdx +63 -2
  340. package/docs/zh/configure/app/tools/webpack-chain.mdx +243 -2
  341. package/docs/zh/configure/app/tools/webpack.mdx +295 -2
  342. package/docs/zh/guides/_meta.json +0 -5
  343. package/docs/zh/guides/advanced-features/_meta.json +7 -5
  344. package/docs/zh/guides/advanced-features/bff/_meta.json +1 -1
  345. package/docs/zh/guides/advanced-features/bff/extend-server.mdx +156 -0
  346. package/docs/zh/guides/advanced-features/bff/frameworks.mdx +51 -117
  347. package/docs/zh/guides/advanced-features/bff/function.mdx +69 -59
  348. package/docs/zh/guides/advanced-features/bff/sdk.mdx +27 -36
  349. package/docs/zh/guides/advanced-features/build-performance.mdx +6 -21
  350. package/docs/zh/guides/advanced-features/page-performance/_meta.json +1 -0
  351. package/docs/zh/guides/advanced-features/rspack-start.mdx +4 -4
  352. package/docs/zh/guides/basic-features/alias.mdx +5 -11
  353. package/docs/zh/guides/basic-features/css/css-modules.mdx +1 -1
  354. package/docs/zh/guides/basic-features/env-vars.mdx +1 -1
  355. package/docs/zh/guides/basic-features/output-files.mdx +2 -2
  356. package/docs/zh/guides/basic-features/routes.mdx +1 -2
  357. package/docs/zh/guides/basic-features/static-assets.mdx +1 -1
  358. package/docs/zh/guides/concept/builder.mdx +1 -1
  359. package/docs/zh/guides/deprecated.md +4 -0
  360. package/docs/zh/guides/get-started/glossary.mdx +7 -7
  361. package/docs/zh/guides/get-started/quick-start.mdx +1 -1
  362. package/docs/zh/guides/topic-detail/_meta.json +0 -6
  363. package/docs/zh/guides/topic-detail/micro-frontend/c01-introduction.mdx +1 -1
  364. package/docs/zh/guides/troubleshooting/builder.mdx +2 -2
  365. package/docs/zh/plugin/_meta.json +19 -0
  366. package/docs/zh/plugin/cli-plugins/_meta.json +1 -0
  367. package/docs/zh/plugin/cli-plugins/plugin-bff.mdx +5 -0
  368. package/docs/zh/plugin/cli-plugins/plugin-ssg.mdx +5 -0
  369. package/docs/zh/{guides/rsbuild-plugins → plugin/cli-plugins}/plugin-swc.mdx +11 -4
  370. package/docs/zh/plugin/cli-plugins/plugin-tailwind.mdx +5 -0
  371. package/docs/zh/plugin/cli-plugins.mdx +6 -0
  372. package/docs/zh/{guides/advanced-features/rsbuild-plugin.mdx → plugin/introduction.mdx} +36 -11
  373. package/docs/zh/{guides/topic-detail/framework-plugin → plugin/plugin-system}/extend.mdx +1 -1
  374. package/docs/zh/{guides/topic-detail/framework-plugin → plugin/plugin-system}/implement.mdx +3 -3
  375. package/docs/zh/{guides/topic-detail/framework-plugin → plugin/plugin-system}/plugin-api.mdx +2 -2
  376. package/docs/zh/plugin/rsbuild-plugins/_meta.json +1 -0
  377. package/docs/zh/{guides → plugin}/rsbuild-plugins/plugin-esbuild.mdx +6 -6
  378. package/docs/zh/plugin/rsbuild-plugins.mdx +4 -0
  379. package/i18n.json +27 -3
  380. package/package.json +8 -13
  381. package/rspress.config.ts +1 -58
  382. package/src/components/Footer/index.tsx +1 -1
  383. package/src/components/RsbuildLink/index.tsx +19 -0
  384. package/src/pages/index.tsx +0 -1
  385. package/docs/en/apis/app/hooks/api/api.mdx +0 -80
  386. package/docs/en/apis/app/hooks/api/app.mdx +0 -12
  387. package/docs/en/guides/advanced-features/bff/type.mdx +0 -46
  388. package/docs/en/guides/advanced-features/eslint.mdx +0 -148
  389. package/docs/zh/apis/app/hooks/api/api.mdx +0 -81
  390. package/docs/zh/apis/app/hooks/api/app.mdx +0 -12
  391. package/docs/zh/guides/advanced-features/bff/type.mdx +0 -46
  392. package/docs/zh/guides/advanced-features/eslint.mdx +0 -152
  393. /package/docs/en/configure/app/output/{splitRouteChunks.mdx → split-route-chunks.mdx} +0 -0
  394. /package/docs/en/guides/advanced-features/{bff/index.mdx → bff.mdx} +0 -0
  395. /package/docs/en/guides/advanced-features/{code-split.mdx → page-performance/code-split.mdx} +0 -0
  396. /package/docs/en/guides/advanced-features/{inline-assets.mdx → page-performance/inline-assets.mdx} +0 -0
  397. /package/docs/en/guides/advanced-features/{optimize-bundle.mdx → page-performance/optimize-bundle.mdx} +0 -0
  398. /package/docs/en/{guides/topic-detail/framework-plugin → plugin/plugin-system}/_meta.json +0 -0
  399. /package/docs/en/{guides/topic-detail/framework-plugin → plugin/plugin-system}/hook-list.mdx +0 -0
  400. /package/docs/en/{guides/topic-detail/framework-plugin → plugin/plugin-system}/hook.mdx +0 -0
  401. /package/docs/en/{guides/topic-detail/framework-plugin → plugin/plugin-system}/introduction.mdx +0 -0
  402. /package/docs/en/{guides/topic-detail/framework-plugin → plugin/plugin-system}/lifecycle.mdx +0 -0
  403. /package/docs/en/{guides/topic-detail/framework-plugin → plugin/plugin-system}/relationship.mdx +0 -0
  404. /package/docs/zh/configure/app/output/{splitRouteChunks.mdx → split-route-chunks.mdx} +0 -0
  405. /package/docs/zh/guides/advanced-features/{bff/index.mdx → bff.mdx} +0 -0
  406. /package/docs/zh/guides/advanced-features/{code-split.mdx → page-performance/code-split.mdx} +0 -0
  407. /package/docs/zh/guides/advanced-features/{inline-assets.mdx → page-performance/inline-assets.mdx} +0 -0
  408. /package/docs/zh/guides/advanced-features/{optimize-bundle.mdx → page-performance/optimize-bundle.mdx} +0 -0
  409. /package/docs/zh/{guides/topic-detail/framework-plugin → plugin/plugin-system}/_meta.json +0 -0
  410. /package/docs/zh/{guides/topic-detail/framework-plugin → plugin/plugin-system}/hook-list.mdx +0 -0
  411. /package/docs/zh/{guides/topic-detail/framework-plugin → plugin/plugin-system}/hook.mdx +0 -0
  412. /package/docs/zh/{guides/topic-detail/framework-plugin → plugin/plugin-system}/introduction.mdx +0 -0
  413. /package/docs/zh/{guides/topic-detail/framework-plugin → plugin/plugin-system}/lifecycle.mdx +0 -0
  414. /package/docs/zh/{guides/topic-detail/framework-plugin → plugin/plugin-system}/relationship.mdx +0 -0
@@ -44,7 +44,7 @@ interface UserConfig {
44
44
  具体配置字段的意义请参考 [配置](/configure/app/usage)。
45
45
 
46
46
  :::tip
47
- 该方法获取到的是只读配置,不可修改。如果需要修改配置,请使用 [config hook](/guides/topic-detail/framework-plugin/hook-list.html#config)。
47
+ 该方法获取到的是只读配置,不可修改。如果需要修改配置,请使用 [config hook](/plugin/plugin-system/hook-list.html#config)。
48
48
  :::
49
49
 
50
50
  ### useResolvedConfigContext
@@ -67,7 +67,7 @@ interface NormalizedConfig {
67
67
  配置字段的完整内容请参考 [配置](/configure/app/usage)。
68
68
 
69
69
  :::tip
70
- 该方法获取到的是只读配置,不可修改。如果需要修改配置,请使用 [config hook](/guides/topic-detail/framework-plugin/hook-list.html#config)。
70
+ 该方法获取到的是只读配置,不可修改。如果需要修改配置,请使用 [config hook](/plugin/plugin-system/hook-list.html#config)。
71
71
  :::
72
72
 
73
73
  ### useAppContext
@@ -0,0 +1 @@
1
+ ["plugin-esbuild"]
@@ -11,7 +11,7 @@ sidebar_position: 3
11
11
 
12
12
  :::
13
13
 
14
- import Esbuild from '@modern-js/builder-doc/docs/zh/shared/esbuild.md';
14
+ import Esbuild from '@site-docs/components/esbuild.mdx';
15
15
 
16
16
  <Esbuild />
17
17
 
@@ -19,7 +19,7 @@ import Esbuild from '@modern-js/builder-doc/docs/zh/shared/esbuild.md';
19
19
 
20
20
  ### 在 Modern.js 框架中使用
21
21
 
22
- Modern.js 框架默认集成了 Builder 的 esbuild 插件,因此,你不需要手动安装和注册插件,只需要使用 [tools.esbuild](/configure/app/tools/esbuild.html) 配置项即可:
22
+ Modern.js 框架默认集成了 esbuild 插件,因此,你不需要手动安装和注册插件,只需要使用 [tools.esbuild](/configure/app/tools/esbuild.html) 配置项即可:
23
23
 
24
24
  ```js
25
25
  export default defineConfig({
@@ -102,7 +102,7 @@ builderPluginEsbuild({
102
102
 
103
103
  #### 关闭代码转译
104
104
 
105
- 将 `loader` 设置为 `false` 来关闭 esbuild 代码转译,此时 Builder 会继续使用 Babel 来进行代码转译。
105
+ 将 `loader` 设置为 `false` 来关闭 esbuild 代码转译,此时 Modern.js 会继续使用 Babel 来进行代码转译。
106
106
 
107
107
  ```ts
108
108
  builderPluginEsbuild({
@@ -146,7 +146,7 @@ builderPluginEsbuild({
146
146
 
147
147
  #### 关闭代码压缩
148
148
 
149
- 将 `minimize` 设置为 `false` 来关闭 esbuild 代码压缩,此时 Builder 会继续使用 Terser 进行代码压缩。
149
+ 将 `minimize` 设置为 `false` 来关闭 esbuild 代码压缩,此时 Modern.js 会继续使用 Terser 进行代码压缩。
150
150
 
151
151
  ```ts
152
152
  builderPluginEsbuild({
@@ -156,7 +156,7 @@ builderPluginEsbuild({
156
156
 
157
157
  ## esbuild 局限性
158
158
 
159
- 虽然 esbuild 能给现有的 webpack 项目带来明显的构建性能提升,但这个工具在接入 Builder 时还存在一定的局限性,需要大家在接入的时候格外注意。
159
+ 虽然 esbuild 能给现有的 webpack 项目带来明显的构建性能提升,但这个工具在接入 Modern.js 时还存在一定的局限性,需要大家在接入的时候格外注意。
160
160
 
161
161
  ### 兼容性
162
162
 
@@ -190,7 +190,7 @@ builderPluginEsbuild({
190
190
 
191
191
  ### 不支持 Babel 插件
192
192
 
193
- 使用 esbuild 进行代码转译时,诸如 `babel-plugin-import` 等原有 Babel 插件的语法编译功能在开启 esbuild 后无法使用。并且由于 Builder 底层使用的是 esbuild 的 `Transform API`,因此不支持使用额外 esbuild 插件来进行自定义编译过程。
193
+ 使用 esbuild 进行代码转译时,诸如 `babel-plugin-import` 等原有 Babel 插件的语法编译功能在开启 esbuild 后无法使用。并且由于 Modern.js 底层使用的是 esbuild 的 `Transform API`,因此不支持使用额外 esbuild 插件来进行自定义编译过程。
194
194
 
195
195
  如果你有 `babel-plugin-import` 等 Babel 插件相关诉求,可以使用 SWC 插件。
196
196
 
@@ -0,0 +1,4 @@
1
+ # 概览
2
+
3
+ - [@modern-js/plugin-esbuild](/plugin/rsbuild-plugins/plugin-esbuild):提供 esbuild 编译支持。
4
+
package/i18n.json CHANGED
@@ -11,6 +11,10 @@
11
11
  "zh": "配置",
12
12
  "en": "Config"
13
13
  },
14
+ "plugin-menu": {
15
+ "zh": "插件",
16
+ "en": "Plugin"
17
+ },
14
18
  "apis": {
15
19
  "zh": "API",
16
20
  "en": "API"
@@ -71,13 +75,33 @@
71
75
  "zh": "使用 BFF",
72
76
  "en": "Using BFF"
73
77
  },
78
+ "page-performance": {
79
+ "zh": "优化页面性能",
80
+ "en": "Optimize Page Performance"
81
+ },
74
82
  "micro-frontend": {
75
83
  "zh": "微前端",
76
84
  "en": "Micro Frontend"
77
85
  },
78
- "framework-plugin": {
79
- "zh": "框架插件",
80
- "en": "Framework Plugin"
86
+ "plugin-system": {
87
+ "zh": "插件系统",
88
+ "en": "Plugin System"
89
+ },
90
+ "cli-plugins": {
91
+ "zh": "CLI 插件",
92
+ "en": "CLI Plugins"
93
+ },
94
+ "server-plugins": {
95
+ "zh": "服务端插件",
96
+ "en": "Server Plugins"
97
+ },
98
+ "runtime-plugins": {
99
+ "zh": "运行时插件",
100
+ "en": "Runtime Plugins"
101
+ },
102
+ "rsbuild-plugins": {
103
+ "zh": "Rsbuild 插件",
104
+ "en": "Rsbuild Plugins"
81
105
  },
82
106
  "reduck": {
83
107
  "zh": "Reduck 状态管理",
package/package.json CHANGED
@@ -15,20 +15,16 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.59.0",
18
+ "version": "2.60.1-alpha.0",
19
19
  "publishConfig": {
20
20
  "registry": "https://registry.npmjs.org/",
21
- "access": "public",
22
- "provenance": true
21
+ "access": "public"
23
22
  },
24
23
  "dependencies": {
25
- "@modern-js/sandpack-react": "2.59.0"
26
- },
27
- "peerDependencies": {
28
- "@modern-js/builder-doc": "^2.59.0"
24
+ "@modern-js/sandpack-react": "2.60.0"
29
25
  },
30
26
  "devDependencies": {
31
- "@rspress/shared": "1.28.2",
27
+ "@rspress/shared": "1.31.0",
32
28
  "@types/fs-extra": "9.0.13",
33
29
  "@types/node": "^16",
34
30
  "classnames": "^2",
@@ -36,15 +32,14 @@
36
32
  "fs-extra": "^10",
37
33
  "react": "^18",
38
34
  "react-dom": "^18",
39
- "rspress": "1.28.2",
35
+ "rspress": "1.31.0",
40
36
  "ts-node": "^10.9.1",
41
- "typescript": "^5",
42
- "@modern-js/builder-doc": "2.59.0"
37
+ "typescript": "^5"
43
38
  },
44
39
  "scripts": {
45
40
  "dev": "rspress dev",
46
- "build": "npx ts-node ./scripts/sync.ts",
47
- "build:doc": "rspress build",
41
+ "dev:no_lazy": "LAZY=false rspress dev",
42
+ "build": "rspress build",
48
43
  "preview": "rspress preview"
49
44
  }
50
45
  }
package/rspress.config.ts CHANGED
@@ -6,61 +6,6 @@ const { version } = require('./package.json');
6
6
 
7
7
  const docPath = path.join(__dirname, 'docs');
8
8
 
9
- const getNavbar = (lang: string): NavItem[] => {
10
- const cn = lang === 'zh';
11
- const prefix = cn ? '' : '/en';
12
- const getLink = (str: string) => `${prefix}${str}`;
13
- const getText = (cnText: string, enText: string) => (cn ? cnText : enText);
14
- return [
15
- {
16
- text: getText('指南', 'Guide'),
17
- link: getLink('/guides/get-started/introduction'),
18
- activeMatch: '/guides/',
19
- },
20
- {
21
- text: getText('教程', 'Tutorials'),
22
- link: getLink('/tutorials/foundations/introduction'),
23
- activeMatch: '/tutorials/',
24
- },
25
- {
26
- text: getText('配置', 'Configure'),
27
- link: getLink('/configure/app/usage'),
28
- activeMatch: '/configure/app',
29
- },
30
- {
31
- text: getText('API', 'API'),
32
- link: getLink('/apis/app/commands'),
33
- activeMatch: '/apis/',
34
- },
35
- {
36
- text: getText('社区', 'Community'),
37
- link: getLink('/community/showcase'),
38
- activeMatch: '/community/',
39
- },
40
- {
41
- text: `v${version}`,
42
- items: [
43
- {
44
- text: 'Rsbuild',
45
- link: 'https://github.com/web-infra-dev/rsbuild',
46
- },
47
- {
48
- text: 'Rspress',
49
- link: 'https://github.com/web-infra-dev/rspress',
50
- },
51
- {
52
- text: 'Modern.js Module',
53
- link: 'https://modernjs.dev/module-tools/en/',
54
- },
55
- {
56
- text: 'Modern.js v1',
57
- link: 'https://modernjs.dev/v1/',
58
- },
59
- ],
60
- },
61
- ];
62
- };
63
-
64
9
  export default defineConfig({
65
10
  root: docPath,
66
11
  base: '/',
@@ -134,12 +79,10 @@ export default defineConfig({
134
79
  ],
135
80
  builderConfig: {
136
81
  output: {
137
- disableTsChecker: true,
138
- svgDefaultExport: 'component',
139
82
  dataUriLimit: 0,
140
83
  },
141
84
  dev: {
142
- startUrl: false,
85
+ lazyCompilation: process.env.LAZY !== 'false',
143
86
  },
144
87
  source: {
145
88
  alias: {
@@ -76,7 +76,7 @@ export default function Footer() {
76
76
  },
77
77
  {
78
78
  label: t('pluginSystem'),
79
- to: useUrl('/guides/topic-detail/framework-plugin/introduction'),
79
+ to: useUrl('/plugin/plugin-system/introduction'),
80
80
  },
81
81
  {
82
82
  label: t('projectGenerator'),
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { useLang } from 'rspress/runtime';
3
+
4
+ const RsbuildLInk = ({ configName }: { configName: string }) => {
5
+ const lang = useLang();
6
+ const href = `https://rsbuild.dev/${lang === 'zh' ? 'zh/' : ''}config/${configName
7
+ .split('.')
8
+ .join('/')
9
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
10
+ .toLowerCase()}`;
11
+
12
+ return (
13
+ <a href={href} target="__blank">
14
+ Rsbuild - {configName}
15
+ </a>
16
+ );
17
+ };
18
+
19
+ export default RsbuildLInk;
@@ -1,4 +1,3 @@
1
- /* eslint-disable react/no-unescaped-entities */
2
1
  import clsx from 'clsx';
3
2
  import { useEffect } from 'react';
4
3
  import { Helmet, useLang, useLocation } from 'rspress/runtime';
@@ -1,80 +0,0 @@
1
- ---
2
- title: '**/*.[tj]s'
3
- sidebar_position: 1
4
- ---
5
- # **/*.[tj]s
6
-
7
- Files that declare API routes in the [BFF Function Mode](/guides/advanced-features/bff/type.html#function-mode). Except for some [convention files](/apis/app/hooks/api/api#allow-list), files in the `api` directory will be registered as the routes.
8
-
9
- :::info
10
- Using the `api` directory requires enabling the BFF feature, and you need to run the `new` command in the project to enable the "BFF" feature.
11
-
12
- This file supports using the `js` or `ts` language, but you must use `esm` syntax to export functions.
13
-
14
- :::
15
-
16
- ## Routing File Convention
17
-
18
- ### Default Routing
19
-
20
- The routing system will map files named `index` to the previous directory.
21
-
22
- - `api/index.ts` -> `$BASENAME/`
23
- - `api/user/index.ts` -> `$BASENAME/user`
24
-
25
- ### Nested Routing
26
-
27
- The routing system also supports parsing nested files. If you create a nested folder structure, the files will still automatically resolve routes in the same way.
28
-
29
- - `api/hello.ts` -> `$BASENAME/hello`
30
- - `api/user/list.ts` -> `$BASENAME/user/list`
31
-
32
- ### Dynamic Routing
33
-
34
- The routing system supports generating dynamic routes through file directories named with `[]`.
35
-
36
- - `api/user/[username]/info.ts` -> `$BASENAME/user/:username/info`
37
- - `api/user/[username]/delete.ts` -> `$BASENAME/user/:username/delete`
38
- - `api/article/[id]/info.ts` -> `$BASENAME/article/:id/info`
39
-
40
- The `$BASENAME` can be configured in `modern.config.js`, and the default value is `/api`.
41
-
42
- ### Allow List
43
-
44
- By default, all files in the `api` directory will be parsed as BFF function files, but we also set a white list for these files that are not parsed:
45
-
46
- - Files whose names start with `_`. For example: `_utils.ts`.
47
- - All files in folders whose names start with `_`. For example: `_utils/index.ts`, `_utils/cp.ts`.
48
- - Test files. For example: `foo.test.ts`.
49
- - TypeScript type files. For example: `hello.d.ts`.
50
- - Files under `node_modules`.
51
-
52
- ## Function Definition
53
-
54
- In addition to the routing rules above, there are also conventions for function definitions and exports in the code.
55
-
56
- Functions are exported by name, and the name of the exported function is the HTTP method accepted by the corresponding interface, that is:
57
-
58
- ```ts
59
- export const get = async () => {
60
- return {
61
- name: 'Modern.js',
62
- desc: 'Modern web Solutions',
63
- };
64
- };
65
- ```
66
-
67
- By exporting functions in this way, you will get a `GET` interface.
68
-
69
- The application project supports 9 Method definitions, namely: `GET`, `POST`, `PUT`, `DELETE`, `CONNECT`, `TRACE`, `PATCH`, `OPTION`, `HEAD`, that is, these Methods can be used as the names of the exported functions.
70
-
71
- The name is case-insensitive, that is, if it is `GET`, it can be written as `get`, `Get`, `GEt`, `GET`, all of which can be accurately recognized. The default export, that is, `export default xxx`, will be mapped to `Get`.
72
-
73
- Because `delete` is a keyword in JavaScript, you can use `del` or `DELETE` instead.
74
-
75
- Multiple functions with different Methods can be defined in one file, but if multiple functions with the same Method are defined, only the first one will take effect.
76
-
77
- :::info
78
- It should be noted that the defined functions should all be asynchronous, which is related to the type when calling the function.
79
-
80
- :::
@@ -1,12 +0,0 @@
1
- ---
2
- title: _app.[tj]s
3
- sidebar_position: 2
4
- ---
5
- # _app.[tj]s
6
-
7
- In the [BFF Function Mode](/guides/advanced-features/bff/type.html#function-mode), this file can add pre-middleware for BFF functions.
8
-
9
- :::note
10
- For specific examples, please refer to [hook](/apis/app/runtime/bff/hook).
11
-
12
- :::
@@ -1,46 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- title: BFF Type
4
- ---
5
- # BFF Type
6
-
7
- Runtime framework support is also an important part of **BFF**. Modern.js supports extending BFF's runtime framework through plugins, and provides a series of built-in plugins, developers can directly use the conventions and ecology of the framework.
8
-
9
- The plugin is compatible with most of the specifications of these frameworks, and each framework needs to provide two types of ways to extend the writing of BFF functions, namely **Function Mode** and **Framework Mode**.
10
-
11
- :::note
12
- Whether the current `api/` directory structure is written as a framework is determined by the corresponding plugin, Modern.js don't care.
13
-
14
- :::
15
-
16
- ## Function Mode
17
-
18
- When the plugin considers that it is currently written as a function, it must support writing middleware in the `api/_ app.ts` to extend the BFF function.
19
-
20
- Modern.js collects the middleware in the `api/_app.ts` and passes it to the plugin, which injects the middleware into the runtime, for example:
21
-
22
- ```ts
23
- import { hook } from '@modern-js/runtime/server';
24
-
25
- export default hook(({ addMiddleware }) => {
26
- addMiddleware(myMiddleware);
27
- });
28
- ```
29
-
30
- :::note
31
- The writing of middleware for different plugins is not the same, see [Runtime Framework](/guides/advanced-features/bff/frameworks) for details.
32
-
33
- :::
34
-
35
- ## Framework Mode
36
-
37
- Framework writing is a way of using frame structure to extend BFF functions. Compared with function writing, although frame writing can use more frame structure and make the entire BFF Server clearer in complex scenarios, it is also more complex and requires more attention to the content at the framework level.
38
-
39
- In the framework writing method, all BFF functions need to be written in the `api/lambda/` directory, and the hook file `_app.[tj]s` cannot be used.
40
-
41
- In most cases, the function writing method can cover the customization requirements of most BFF functions. Only when your project server level logic is more complex, the code needs to be layered, or you need to use more elements of the framework, you need to use the framework writing method.
42
-
43
- :::note
44
- The directory structure of different plugin frameworks is not the same, see [Runtime Frameworks](/guides/advanced-features/bff/frameworks) for details.
45
-
46
- :::
@@ -1,148 +0,0 @@
1
- ---
2
- sidebar_position: 8
3
- ---
4
-
5
- # ESLint Rules
6
-
7
- **Modern.js ESLint Rules** is the full set of **ESLint** rules, includes `@modern-js` (Lint rules for Node.js projects) and `@modern-js-app` (Lint rules for web projects).
8
-
9
- More ESLint usage is described below with specific questions.
10
-
11
- ## Q: How To Deal With Lint
12
-
13
- ### Automatic Fix
14
-
15
- Most problems will be solved by the automatic fix of ESLint rules or the code formatting of [Prettier](https://prettier.io/) (which has been integrated into ESLint), and the developer does not need to care about the details of the problem and how to solve it.
16
-
17
- :::info
18
- This kind of automatic fix is mainly performed when the IDE saves the file, and a few will be automatically fix on submit.
19
- :::
20
-
21
- ### Batch Automatic Fix
22
-
23
- In rare cases, such as when an old project is migrated, the following commands can be executed to repair and inspect all files in bulk:
24
-
25
- ```bash
26
- pnpm run lint:error
27
- ```
28
-
29
- ### Manual Fix
30
-
31
- For problems that cannot be automatically fixed, you can click the rule link in the problem prompt box in the IDE to open the document of this rule to view the explanation and solution of the problem.
32
-
33
- ### Claim Exceptions
34
-
35
- At this stage, some rules are not smart enough, and in most cases there will be great benefits, and in a few cases it may not apply. But if the entire rule is turned off or changed for these few cases, the gain is not worth the loss.
36
-
37
- In this case, you can use the [eslint-disable](https://eslint.org/docs/user-guide/configuring/rules#disabling-rules) comment to mark the code blocks that meet the **rare case**, stating that this is an exception and should be ignored. For example:
38
-
39
- ```js
40
- /* eslint-disable filenames/match-exported */
41
- ...
42
- /* eslint-enable filenames/match-exported */
43
- ```
44
-
45
- :::info
46
- Enter eslint in the VS Code editor, a prompt box about `eslint-disable` will automatically appear, select the prompt option to generate the corresponding comment pair.
47
- :::
48
-
49
- [Modern.js ESLint Rule Set] requires that [eslint-disable](https://eslint.org/docs/user-guide/configuring/rules#disabling-rules) must be used in pairs, the scope to be affected must be clearly expressed, and what rules to disable within this scope must be clearly expressed, the purpose is to make **exceptions** Clear, minimized scope to avoid abuse of [eslint-disable](https://eslint.org/docs/user-guide/configuring/rules#disabling-rules), resulting in code that does not belong to the exception being disabled by the rule.
50
-
51
- ## Q: How to customize ESLint rules
52
-
53
- ### The `eslintConfig` field in `package.json` in the root directory
54
-
55
- This place is the default ESLint configuration for the entire repository and is designed for pure Node.js code (which can only run in Node.js).
56
-
57
- If the project does have special requirements or inevitable compatibility issues with some rules (not exceptions), you can add rule configuration here. This configuration will take precedence over the default [Modern.js ESLint ruleset], such as:
58
-
59
-
60
- ```json
61
- "eslintConfig": {
62
- "extends": [
63
- "@modern-js"
64
- ],
65
- "rules": {
66
- "filenames/match-exported": "off"
67
- }
68
- },
69
-
70
- ```
71
-
72
- ### `src/.eslintrc.js`
73
-
74
- Modern.js Framework or Modern.js Module project will have this configuration file by default in the source code directory, which is designed for Universal JS code.
75
-
76
- :::info
77
- Universal JS code is code that can run on both the browser side and the server side.
78
- :::
79
-
80
- If the project does have special requirements or inevitable compatibility issues with some rules (not exceptions), you can add a rule configuration here, which will take precedence over the default [Modern.js ESLint ruleset], such as:
81
-
82
- ```js
83
- // eslint-disable-next-line import/no-commonjs
84
- module.exports = {
85
- root: true,
86
- extends: ['@modern-js-app'],
87
- parserOptions: {
88
- tsconfigRootDir: __dirname,
89
- project: ['../tsconfig.json'],
90
- },
91
- rules: {
92
- 'filenames/match-exported': 'off',
93
- },
94
- };
95
- ```
96
-
97
- If necessary, you can continue to add the `.eslintrc.js` file in different subdirectories, and make special configuration for the code in this subdirectory:
98
-
99
- ```js
100
- module.exports = {
101
- rules: {
102
- 'filenames/match-exported': 'off',
103
- },
104
- };
105
- ```
106
-
107
- :::tip
108
- Note: It is not necessary to use the `extends` field, it will automatically inherit the configuration of the parent directory.
109
-
110
- :::
111
-
112
- ### `eslintIgnore` field in `package.json`
113
-
114
- Adding directories that contain `.js`, `.jsx`, `.ts`, `.tsx` files, but do not require code inspection and automatic repair, to `eslintIgnore` can optimize the speed of ESLint inspection, such as:
115
-
116
- ```json
117
- "eslintIgnore": [
118
- "node_modules",
119
- "dist",
120
- "output"
121
- ],
122
- ```
123
-
124
- ## Q: How to upgrade the version of the ESLint plugin
125
-
126
- As long as it is not a change in the Major version (the "^" symbol that does not comply with the [Semver](https://semver.org/) rule), you can specify this dependency directly in the `package.json` of the business project, delete the Lock file (or try to manually delete the Lock file). the contents of this package name in the file), execute `pnpm install` to reinstall the dependency and generate a new Lock file.
127
-
128
- After doing this, the plugin should only exist in the `./node_modules` directory of the business project and be upgraded to the version you specified.
129
-
130
- :::tip
131
- - Major version is the major version number. For more information, please read [[Semantic Versioning](https://semver.org/#summary) ].
132
- - All upstream projects encapsulated by Modern.js (such as ESLint, [ESLint plugin](https://eslint.org/docs/user-guide/configuring/plugins#plugins), [React Router](https://reactrouter.com/), etc.) can also be upgraded in this way.
133
- - Modern.js will also try to upgrade these upstream dependencies as timely as possible in each release.
134
- - Major version upgrades need to be published by Modern.js.
135
-
136
- :::
137
-
138
- ## Q: WebStorm sometimes reports ESLint errors
139
-
140
- Since WebStorm believes that the ESLint execution directory is determined based on the `.eslintrc'` file. Therefore, the placement of the `src/.eslintrc` file location will cause the location specified by the `tsconfig.json` file (in the project root directory) to not be found in the'src/'directory.
141
-
142
- you need to configure it manually:
143
-
144
- ```json
145
- --parser-options=project:../tsconfig.json
146
- ```
147
-
148
- ![webstorm-lint-error](https://lf3-static.bytednsdoc.com/obj/eden-cn/aphqeh7uhohpquloj/modern-js/docs/webstorm-lint-error.png)
@@ -1,81 +0,0 @@
1
- ---
2
- title: '**/*.[tj]s'
3
- sidebar_position: 1
4
- ---
5
-
6
- # **/*.[tj]s
7
-
8
- 在 [BFF 函数写法](/guides/advanced-features/bff/type.html#函数写法)下,声明 API 路由的文件。除了[某些约定文件](/apis/app/hooks/api/api#白名单)外,`api` 目录下的文件会被注册为接口的路由。
9
-
10
- :::info
11
- 使用 `api` 目录需要开启 BFF 功能,需要在项目下执行 new 命令启用「BFF」功能。
12
-
13
- 该文件支持使用 `js` 或 `ts` 语言,但必须使用 `esm` 语法导出函数。
14
-
15
- :::
16
-
17
- ## 该文件约定路由如下:
18
-
19
- ### 默认路由
20
-
21
- 路由系统会将以 `index` 命名的文件会被映射到上一层目录。
22
-
23
- - `api/index.ts` -> `$BASENAME/`
24
- - `api/user/index.ts` -> `$BASENAME/user`
25
-
26
- ### 嵌套路由
27
-
28
- 路由系统也支持解析嵌套的文件,如果创建嵌套文件夹结构,文件仍会以相同方式自动解析路由。
29
-
30
- - `api/hello.ts` -> `$BASENAME/hello`
31
- - `api/user/list.ts` -> `$BASENAME/user/list`
32
-
33
- ### 动态路由
34
-
35
- 路由系统支持通过 `[]` 命名的文件目录生成动态路由。
36
-
37
- - `api/user/[username]/info.ts` -> `$BASENAME/user/:username/info`
38
- - `api/user/[username]/delete.ts` -> `$BASENAME/user/:username/delete`
39
- - `api/article/[id]/info.ts` -> `$BASENAME/article/:id/info`
40
-
41
- 其中的 `$BASENAME` 可以在 `modern.config.js` 中进行配置,默认值为 `/api`。
42
-
43
- ### 白名单
44
-
45
- 默认 `api` 目录下所有文件都会当作 BFF 函数文件去解析,但同样我们也设置了白名单,这些文件不被被解析:
46
-
47
- - 命名以 `_` 开头的文件。例如:`_utils.ts`。
48
- - 命名以 `_` 开头的文件夹下所有文件。例如:`_utils/index.ts`、`_utils/cp.ts`。
49
- - 测试文件。例如:`foo.test.ts`。
50
- - TypeScript 类型文件。例如:`hello.d.ts`。
51
- - `node_module` 下的文件。
52
-
53
- ## 函数定义
54
-
55
- 除了上面的路由规则之外,代码中函数定义与导出也有相应的约定。
56
-
57
- 函数通过具名导出,导出函数的名字为对应接口接受的 HTTP Method,即:
58
-
59
- ```ts
60
- export const get = async () => {
61
- return {
62
- name: 'Modern.js',
63
- desc: '现代 web 工程方案',
64
- };
65
- };
66
- ```
67
-
68
- 这样导出函数,则会得到一个 `GET` 接口。
69
-
70
- Modern.js 工程中支持了 9 个 Method 定义,即:`GET`、`POST`、`PUT`、`DELETE`、`CONNECT`、`TRACE`、`PATCH`、`OPTION`、`HEAD`,即可以用这些 Method 作为函数导出的名字。
71
-
72
- 名字是大小不敏感的,就是说,如果是 `GET`,写成 `get`、`Get`、`GEt`、`GET`,都可以准确识别。而默认导出,即 `export default xxx` 则会被映射为 `Get`。
73
-
74
- 因为 `delete` 是 JavaScript 中的关键字,可以使用 `del` 或者 `DELETE` 代替。
75
-
76
- 可以在一个文件中定义多个不同 Method 的函数,但如果定义多个相同 Method 的函数,则只有第一个会生效。
77
-
78
- :::info
79
- 需要注意的是,定义的函数都应该是异步的,这个与函数调用时类型有关。
80
-
81
- :::
@@ -1,12 +0,0 @@
1
- ---
2
- title: _app.[tj]s
3
- sidebar_position: 2
4
- ---
5
- # _app.[tj]s
6
-
7
- 在 [BFF 函数写法](/guides/advanced-features/bff/type.html#函数写法)下,该文件可以为 BFF 函数添加前置中间件。
8
-
9
- :::note
10
- 具体示例请参考 [hook](/apis/app/runtime/bff/hook)
11
-
12
- :::