@modern-js/main-doc 2.2.0 → 2.3.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 (295) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/en/components/global-proxy-config.mdx +2 -2
  3. package/en/configure/app/auto-load-plugin.mdx +2 -2
  4. package/en/configure/app/bff/prefix.mdx +2 -2
  5. package/en/configure/app/bff/proxy.mdx +2 -2
  6. package/en/configure/app/builder-plugins.mdx +2 -2
  7. package/en/configure/app/deploy/microFrontend.mdx +6 -6
  8. package/en/configure/app/dev/asset-prefix.mdx +4 -3
  9. package/en/configure/app/dev/hmr.mdx +4 -3
  10. package/en/configure/app/dev/https.mdx +4 -3
  11. package/en/configure/app/dev/port.mdx +4 -3
  12. package/en/configure/app/dev/progress-bar.mdx +4 -3
  13. package/en/configure/app/dev/start-url.mdx +4 -3
  14. package/en/configure/app/experiments/lazy-compilation.mdx +4 -3
  15. package/en/configure/app/html/app-icon.mdx +4 -3
  16. package/en/configure/app/html/crossorigin.mdx +4 -3
  17. package/en/configure/app/html/disable-html-folder.mdx +4 -3
  18. package/en/configure/app/html/favicon-by-entries.mdx +4 -3
  19. package/en/configure/app/html/favicon.mdx +4 -3
  20. package/en/configure/app/html/inject-by-entries.mdx +4 -3
  21. package/en/configure/app/html/inject.mdx +4 -3
  22. package/en/configure/app/html/meta-by-entries.mdx +4 -3
  23. package/en/configure/app/html/meta.mdx +4 -3
  24. package/en/configure/app/html/mount-id.mdx +4 -3
  25. package/en/configure/app/html/tags-by-entries.mdx +4 -3
  26. package/en/configure/app/html/tags.mdx +4 -3
  27. package/en/configure/app/html/template-by-entries.mdx +4 -3
  28. package/en/configure/app/html/template-parameters-by-entries.mdx +4 -3
  29. package/en/configure/app/html/template-parameters.mdx +4 -3
  30. package/en/configure/app/html/template.mdx +4 -3
  31. package/en/configure/app/html/title-by-entries.mdx +4 -3
  32. package/en/configure/app/html/title.mdx +4 -3
  33. package/en/configure/app/output/asset-prefix.mdx +4 -3
  34. package/en/configure/app/output/assets-retry.mdx +4 -3
  35. package/en/configure/app/output/charset.mdx +4 -3
  36. package/en/configure/app/output/clean-dist-path.mdx +4 -3
  37. package/en/configure/app/output/convert-to-rem.mdx +4 -3
  38. package/en/configure/app/output/copy.mdx +4 -3
  39. package/en/configure/app/output/css-module-local-ident-name.mdx +4 -3
  40. package/en/configure/app/output/data-uri-limit.mdx +4 -3
  41. package/en/configure/app/output/disable-css-extract.mdx +4 -3
  42. package/en/configure/app/output/disable-css-module-extension.mdx +4 -3
  43. package/en/configure/app/output/disable-filename-hash.mdx +4 -3
  44. package/en/configure/app/output/disable-inline-runtime-chunk.mdx +4 -3
  45. package/en/configure/app/output/disable-minimize.mdx +4 -3
  46. package/en/configure/app/output/disable-node-polyfill.mdx +2 -2
  47. package/en/configure/app/output/disable-source-map.mdx +4 -3
  48. package/en/configure/app/output/disable-ts-checker.mdx +4 -3
  49. package/en/configure/app/output/dist-path.mdx +4 -3
  50. package/en/configure/app/output/enable-asset-fallback.mdx +4 -3
  51. package/en/configure/app/output/enable-asset-manifest.mdx +4 -3
  52. package/en/configure/app/output/enable-css-module-tsdeclaration.mdx +4 -3
  53. package/en/configure/app/output/enable-inline-scripts.mdx +4 -3
  54. package/en/configure/app/output/enable-inline-styles.mdx +4 -3
  55. package/en/configure/app/output/enable-latest-decorators.mdx +4 -3
  56. package/en/configure/app/output/externals.mdx +4 -3
  57. package/en/configure/app/output/filename.mdx +4 -3
  58. package/en/configure/app/output/legal-comments.mdx +4 -3
  59. package/en/configure/app/output/override-browserslist.mdx +4 -3
  60. package/en/configure/app/output/polyfill.mdx +4 -3
  61. package/en/configure/app/output/ssg.mdx +2 -2
  62. package/en/configure/app/output/svg-default-export.mdx +4 -3
  63. package/en/configure/app/performance/build-cache.mdx +4 -3
  64. package/en/configure/app/performance/bundle-analyze.mdx +4 -3
  65. package/en/configure/app/performance/chunk-split.mdx +4 -3
  66. package/en/configure/app/performance/print-file-size.mdx +4 -3
  67. package/en/configure/app/performance/profile.mdx +4 -3
  68. package/en/configure/app/performance/remove-console.mdx +4 -3
  69. package/en/configure/app/performance/remove-moment-locale.mdx +4 -3
  70. package/en/configure/app/plugins.mdx +2 -2
  71. package/en/configure/app/runtime/intro.mdx +2 -2
  72. package/en/configure/app/runtime/master-app.mdx +1 -2
  73. package/en/configure/app/runtime/router.mdx +6 -6
  74. package/en/configure/app/runtime/state.mdx +14 -14
  75. package/en/configure/app/security/check-syntax.mdx +13 -0
  76. package/en/configure/app/security/sri.mdx +4 -3
  77. package/en/configure/app/server/base-url.mdx +2 -2
  78. package/en/configure/app/server/enable-framework-ext.mdx +2 -2
  79. package/en/configure/app/server/port.mdx +2 -2
  80. package/en/configure/app/server/public-routes.mdx +2 -2
  81. package/en/configure/app/server/routes.mdx +2 -2
  82. package/en/configure/app/server/ssr-by-entries.mdx +2 -2
  83. package/en/configure/app/server/ssr.mdx +2 -2
  84. package/en/configure/app/source/alias.mdx +4 -3
  85. package/en/configure/app/source/compile-js-data-uri.mdx +4 -3
  86. package/en/configure/app/source/config-dir.mdx +2 -2
  87. package/en/configure/app/source/define.mdx +4 -3
  88. package/en/configure/app/source/design-system.mdx +2 -2
  89. package/en/configure/app/source/disable-default-entries.mdx +2 -2
  90. package/en/configure/app/source/disable-entry-dirs.mdx +2 -2
  91. package/en/configure/app/source/enable-async-entry.mdx +2 -2
  92. package/en/configure/app/source/entries-dir.mdx +2 -2
  93. package/en/configure/app/source/entries.mdx +2 -2
  94. package/en/configure/app/source/exclude.mdx +4 -3
  95. package/en/configure/app/source/global-vars.mdx +4 -3
  96. package/en/configure/app/source/include.mdx +4 -3
  97. package/en/configure/app/source/module-scopes.mdx +4 -3
  98. package/en/configure/app/source/pre-entry.mdx +4 -3
  99. package/en/configure/app/source/resolve-extension-prefix.mdx +4 -3
  100. package/en/configure/app/source/resolve-main-fields.mdx +4 -3
  101. package/en/configure/app/testing/transformer.mdx +2 -2
  102. package/en/configure/app/tools/autoprefixer.mdx +4 -3
  103. package/en/configure/app/tools/babel.mdx +4 -3
  104. package/en/configure/app/tools/css-extract.mdx +4 -3
  105. package/en/configure/app/tools/css-loader.mdx +4 -3
  106. package/en/configure/app/tools/dev-server.mdx +4 -3
  107. package/en/configure/app/tools/esbuild.mdx +2 -2
  108. package/en/configure/app/tools/html-plugin.mdx +4 -3
  109. package/en/configure/app/tools/inspector.mdx +4 -3
  110. package/en/configure/app/tools/jest.mdx +2 -2
  111. package/en/configure/app/tools/less.mdx +4 -3
  112. package/en/configure/app/tools/minify-css.mdx +4 -3
  113. package/en/configure/app/tools/postcss.mdx +4 -3
  114. package/en/configure/app/tools/pug.mdx +4 -3
  115. package/en/configure/app/tools/sass.mdx +4 -3
  116. package/en/configure/app/tools/style-loader.mdx +4 -3
  117. package/en/configure/app/tools/styled-components.mdx +4 -3
  118. package/en/configure/app/tools/swc.mdx +2 -2
  119. package/en/configure/app/tools/tailwindcss.mdx +8 -16
  120. package/en/configure/app/tools/terser.mdx +4 -3
  121. package/en/configure/app/tools/ts-checker.mdx +4 -3
  122. package/en/configure/app/tools/ts-loader.mdx +4 -3
  123. package/en/configure/app/tools/webpack-chain.mdx +4 -3
  124. package/en/configure/app/tools/webpack.mdx +4 -3
  125. package/en/configure/app/usage.mdx +54 -8
  126. package/en/guides/basic-features/builder.mdx +3 -3
  127. package/en/guides/topic-detail/generator/config/common.mdx +12 -12
  128. package/package.json +3 -3
  129. package/scripts/config.ts +5 -4
  130. package/scripts/summary.en.json +1 -1
  131. package/scripts/summary.zh.json +1 -1
  132. package/zh/apis/app/commands/test.mdx +1 -1
  133. package/zh/apis/app/hooks/api/functions/api.mdx +2 -2
  134. package/zh/apis/app/hooks/api/test.mdx +1 -1
  135. package/zh/apis/app/hooks/config/storybook.mdx +1 -1
  136. package/zh/apis/app/hooks/config/upload.mdx +1 -1
  137. package/zh/apis/app/hooks/server/test.mdx +1 -1
  138. package/zh/apis/app/hooks/src/stories.mdx +1 -1
  139. package/zh/apis/app/hooks/src/test.mdx +1 -1
  140. package/zh/apis/app/runtime/testing/cleanup.mdx +1 -1
  141. package/zh/apis/monorepo/commands/bump.mdx +1 -1
  142. package/zh/apis/monorepo/commands/change.mdx +1 -1
  143. package/zh/apis/monorepo/hooks/apps.mdx +1 -1
  144. package/zh/apis/monorepo/hooks/examples.mdx +1 -1
  145. package/zh/apis/monorepo/hooks/features.mdx +1 -1
  146. package/zh/apis/monorepo/hooks/packages.mdx +1 -1
  147. package/zh/components/global-proxy-config.mdx +3 -3
  148. package/zh/configure/app/auto-load-plugin.mdx +2 -2
  149. package/zh/configure/app/bff/prefix.mdx +2 -2
  150. package/zh/configure/app/bff/proxy.mdx +3 -3
  151. package/zh/configure/app/builder-plugins.mdx +2 -2
  152. package/zh/configure/app/deploy/microFrontend.mdx +6 -6
  153. package/zh/configure/app/dev/asset-prefix.mdx +4 -3
  154. package/zh/configure/app/dev/hmr.mdx +4 -3
  155. package/zh/configure/app/dev/https.mdx +4 -3
  156. package/zh/configure/app/dev/port.mdx +4 -3
  157. package/zh/configure/app/dev/progress-bar.mdx +4 -3
  158. package/zh/configure/app/dev/start-url.mdx +4 -3
  159. package/zh/configure/app/experiments/lazy-compilation.mdx +4 -3
  160. package/zh/configure/app/html/app-icon.mdx +4 -3
  161. package/zh/configure/app/html/crossorigin.mdx +4 -3
  162. package/zh/configure/app/html/disable-html-folder.mdx +4 -3
  163. package/zh/configure/app/html/favicon-by-entries.mdx +4 -3
  164. package/zh/configure/app/html/favicon.mdx +4 -3
  165. package/zh/configure/app/html/inject-by-entries.mdx +4 -3
  166. package/zh/configure/app/html/inject.mdx +4 -3
  167. package/zh/configure/app/html/meta-by-entries.mdx +4 -3
  168. package/zh/configure/app/html/meta.mdx +4 -3
  169. package/zh/configure/app/html/mount-id.mdx +4 -3
  170. package/zh/configure/app/html/tags-by-entries.mdx +4 -3
  171. package/zh/configure/app/html/tags.mdx +4 -3
  172. package/zh/configure/app/html/template-by-entries.mdx +4 -3
  173. package/zh/configure/app/html/template-parameters-by-entries.mdx +4 -3
  174. package/zh/configure/app/html/template-parameters.mdx +4 -3
  175. package/zh/configure/app/html/template.mdx +4 -3
  176. package/zh/configure/app/html/title-by-entries.mdx +4 -3
  177. package/zh/configure/app/html/title.mdx +4 -3
  178. package/zh/configure/app/output/asset-prefix.mdx +4 -3
  179. package/zh/configure/app/output/assets-retry.mdx +4 -3
  180. package/zh/configure/app/output/charset.mdx +4 -3
  181. package/zh/configure/app/output/clean-dist-path.mdx +4 -3
  182. package/zh/configure/app/output/convert-to-rem.mdx +4 -3
  183. package/zh/configure/app/output/copy.mdx +4 -3
  184. package/zh/configure/app/output/css-module-local-ident-name.mdx +4 -3
  185. package/zh/configure/app/output/data-uri-limit.mdx +4 -3
  186. package/zh/configure/app/output/disable-css-extract.mdx +4 -3
  187. package/zh/configure/app/output/disable-css-module-extension.mdx +4 -3
  188. package/zh/configure/app/output/disable-filename-hash.mdx +4 -3
  189. package/zh/configure/app/output/disable-inline-runtime-chunk.mdx +4 -3
  190. package/zh/configure/app/output/disable-minimize.mdx +4 -3
  191. package/zh/configure/app/output/disable-node-polyfill.mdx +2 -2
  192. package/zh/configure/app/output/disable-source-map.mdx +4 -3
  193. package/zh/configure/app/output/disable-ts-checker.mdx +4 -3
  194. package/zh/configure/app/output/dist-path.mdx +4 -3
  195. package/zh/configure/app/output/enable-asset-fallback.mdx +4 -3
  196. package/zh/configure/app/output/enable-asset-manifest.mdx +4 -3
  197. package/zh/configure/app/output/enable-css-module-tsdeclaration.mdx +4 -3
  198. package/zh/configure/app/output/enable-inline-scripts.mdx +4 -3
  199. package/zh/configure/app/output/enable-inline-styles.mdx +4 -3
  200. package/zh/configure/app/output/enable-latest-decorators.mdx +4 -3
  201. package/zh/configure/app/output/externals.mdx +4 -3
  202. package/zh/configure/app/output/filename.mdx +4 -3
  203. package/zh/configure/app/output/legal-comments.mdx +4 -3
  204. package/zh/configure/app/output/override-browserslist.mdx +4 -3
  205. package/zh/configure/app/output/polyfill.mdx +4 -3
  206. package/zh/configure/app/output/ssg.mdx +2 -2
  207. package/zh/configure/app/output/svg-default-export.mdx +4 -3
  208. package/zh/configure/app/performance/build-cache.mdx +4 -3
  209. package/zh/configure/app/performance/bundle-analyze.mdx +4 -3
  210. package/zh/configure/app/performance/chunk-split.mdx +4 -3
  211. package/zh/configure/app/performance/print-file-size.mdx +4 -3
  212. package/zh/configure/app/performance/profile.mdx +4 -3
  213. package/zh/configure/app/performance/remove-console.mdx +4 -3
  214. package/zh/configure/app/performance/remove-moment-locale.mdx +4 -3
  215. package/zh/configure/app/plugins.mdx +2 -2
  216. package/zh/configure/app/runtime/intro.mdx +3 -3
  217. package/zh/configure/app/runtime/master-app.mdx +1 -1
  218. package/zh/configure/app/runtime/router.mdx +6 -6
  219. package/zh/configure/app/runtime/state.mdx +14 -14
  220. package/zh/configure/app/security/check-syntax.mdx +13 -0
  221. package/zh/configure/app/security/sri.mdx +4 -3
  222. package/zh/configure/app/server/base-url.mdx +2 -2
  223. package/zh/configure/app/server/enable-framework-ext.mdx +2 -2
  224. package/zh/configure/app/server/port.mdx +2 -2
  225. package/zh/configure/app/server/public-routes.mdx +2 -2
  226. package/zh/configure/app/server/routes.mdx +2 -2
  227. package/zh/configure/app/server/ssr-by-entries.mdx +3 -3
  228. package/zh/configure/app/server/ssr.mdx +2 -2
  229. package/zh/configure/app/source/alias.mdx +4 -3
  230. package/zh/configure/app/source/compile-js-data-uri.mdx +4 -3
  231. package/zh/configure/app/source/config-dir.mdx +2 -2
  232. package/zh/configure/app/source/define.mdx +4 -3
  233. package/zh/configure/app/source/design-system.mdx +2 -2
  234. package/zh/configure/app/source/disable-default-entries.mdx +2 -2
  235. package/zh/configure/app/source/disable-entry-dirs.mdx +2 -2
  236. package/zh/configure/app/source/enable-async-entry.mdx +2 -2
  237. package/zh/configure/app/source/entries-dir.mdx +2 -2
  238. package/zh/configure/app/source/entries.mdx +2 -2
  239. package/zh/configure/app/source/exclude.mdx +4 -3
  240. package/zh/configure/app/source/global-vars.mdx +4 -3
  241. package/zh/configure/app/source/include.mdx +4 -3
  242. package/zh/configure/app/source/module-scopes.mdx +4 -3
  243. package/zh/configure/app/source/pre-entry.mdx +4 -3
  244. package/zh/configure/app/source/resolve-extension-prefix.mdx +4 -3
  245. package/zh/configure/app/source/resolve-main-fields.mdx +4 -3
  246. package/zh/configure/app/testing/transformer.mdx +2 -2
  247. package/zh/configure/app/tools/autoprefixer.mdx +4 -3
  248. package/zh/configure/app/tools/babel.mdx +4 -3
  249. package/zh/configure/app/tools/css-extract.mdx +4 -3
  250. package/zh/configure/app/tools/css-loader.mdx +4 -3
  251. package/zh/configure/app/tools/dev-server.mdx +4 -3
  252. package/zh/configure/app/tools/esbuild.mdx +2 -2
  253. package/zh/configure/app/tools/html-plugin.mdx +4 -3
  254. package/zh/configure/app/tools/inspector.mdx +4 -3
  255. package/zh/configure/app/tools/jest.mdx +2 -2
  256. package/zh/configure/app/tools/less.mdx +4 -3
  257. package/zh/configure/app/tools/minify-css.mdx +4 -3
  258. package/zh/configure/app/tools/postcss.mdx +4 -3
  259. package/zh/configure/app/tools/pug.mdx +4 -3
  260. package/zh/configure/app/tools/sass.mdx +4 -3
  261. package/zh/configure/app/tools/style-loader.mdx +4 -3
  262. package/zh/configure/app/tools/styled-components.mdx +4 -3
  263. package/zh/configure/app/tools/swc.mdx +2 -2
  264. package/zh/configure/app/tools/tailwindcss.mdx +10 -16
  265. package/zh/configure/app/tools/terser.mdx +4 -3
  266. package/zh/configure/app/tools/ts-checker.mdx +4 -3
  267. package/zh/configure/app/tools/ts-loader.mdx +4 -3
  268. package/zh/configure/app/tools/webpack-chain.mdx +4 -3
  269. package/zh/configure/app/tools/webpack.mdx +4 -3
  270. package/zh/configure/app/usage.mdx +54 -8
  271. package/zh/guides/advanced-features/bff/function.mdx +3 -3
  272. package/zh/guides/advanced-features/code-split.mdx +1 -1
  273. package/zh/guides/advanced-features/compatibility.mdx +1 -1
  274. package/zh/guides/advanced-features/eslint.mdx +3 -3
  275. package/zh/guides/advanced-features/ssr.mdx +1 -1
  276. package/zh/guides/basic-features/alias.mdx +1 -1
  277. package/zh/guides/basic-features/builder.mdx +2 -2
  278. package/zh/guides/basic-features/css/postcss.mdx +1 -1
  279. package/zh/guides/basic-features/html.mdx +1 -1
  280. package/zh/guides/topic-detail/framework-plugin/hook.mdx +1 -1
  281. package/zh/guides/topic-detail/generator/config/common.mdx +12 -12
  282. package/zh/guides/topic-detail/generator/plugin/api/input/addInputBefore.mdx +1 -1
  283. package/zh/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +1 -1
  284. package/zh/guides/topic-detail/model/auto-actions.mdx +1 -1
  285. package/zh/guides/topic-detail/model/define-model.mdx +1 -1
  286. package/zh/guides/topic-detail/model/manage-effects.mdx +1 -1
  287. package/zh/guides/topic-detail/model/quick-start.mdx +2 -2
  288. package/zh/guides/topic-detail/model/test-model.mdx +1 -1
  289. package/zh/guides/topic-detail/model/use-model.mdx +3 -3
  290. package/zh/guides/topic-detail/monorepo/create-sub-project.mdx +2 -2
  291. package/zh/guides/topic-detail/monorepo/sub-project-interface.mdx +2 -2
  292. package/zh/tutorials/first-app/c02-component.mdx +1 -1
  293. package/zh/tutorials/first-app/c03-css.mdx +3 -3
  294. package/zh/tutorials/first-app/c04-routes.mdx +1 -1
  295. package/zh/tutorials/first-app/c06-model.mdx +1 -1
@@ -1,10 +1,11 @@
1
1
  ---
2
- title: tools.webpack
3
2
  sidebar_label: webpack
4
3
  ---
5
4
 
6
- :::info BUILDER
7
- 该配置为 Modern.js Builder 配置,详细信息可参考 [tools.webpack](https://modernjs.dev/builder/api/config-tools.html#tools-webpack)。
5
+ # tools.webpack
6
+
7
+ :::tip
8
+ 该配置由 Modern.js Builder 提供,更多信息可参考 [tools.webpack](https://modernjs.dev/builder/api/config-tools.html#tools-webpack)。
8
9
  :::
9
10
 
10
11
  import Main from '@modern-js/builder-doc/docs/zh/config/tools/webpack.md'
@@ -8,22 +8,22 @@ Modern.js 中有两种配置,一个是编译时配置,一个是服务端运
8
8
 
9
9
  编译时配置可以在两个位置进行配置:
10
10
 
11
+ - 根路径下的 `modern.config.(ts|js|mjs)` 文件
11
12
  - `package.json` 文件
12
- - 根路径下的 `modern.config.t(j)s` 文件
13
-
14
- :::warning 注意
15
- 同一个配置不支持同时在 `package.json` 中和 `modern.config.t(j)s` 中配置。推荐在 `modern.config.t(j)s` 中进行配置。
16
13
 
14
+ :::info
15
+ 不支持同时在 package.json 中和 modern.config.ts 中配置同一个配置项,推荐优先在 modern.config.ts 中进行配置。如果 Modern.js 检测到重复配置导致的冲突,将会抛出警告。
17
16
  :::
18
17
 
19
- 服务端运行时配置可以在根路径下的 `modern.server-runtime.config.t(j)s` 自定义配置选项。
18
+ 服务端运行时配置可以在根路径下的 `modern.server-runtime.config.(ts|js|mjs)` 中自定义配置选项。
20
19
 
21
20
  ## 在配置文件中配置
22
21
 
23
- Modern.js 的配置文件定义在项目的根目录下,同时支持 `.js` 和 `.ts` 两种格式:
22
+ Modern.js 的配置文件定义在项目的根目录下,支持 `.js`, `.ts` 和 `.mjs` 格式:
24
23
 
25
24
  - `modern.config.js`
26
25
  - `modern.config.ts`
26
+ - `modern.config.mjs`
27
27
 
28
28
  ### modern.config.js
29
29
 
@@ -51,7 +51,7 @@ export default {
51
51
  };
52
52
  ```
53
53
 
54
- ### modern.config.ts
54
+ ### modern.config.ts(推荐)
55
55
 
56
56
  我们推荐使用 .ts 格式的配置文件,它提供了友好的 TypeScript 类型提示,从而帮助你避免配置中的错误。
57
57
 
@@ -87,7 +87,53 @@ export default defineConfig({
87
87
 
88
88
  由于 JSON 文件格式的限制,`package.json` 中只能定义数字、字符串、布尔值、数组等简单类型的值,当我们需要设置函数类型的值时,建议在 Modern.js 配置文件中进行设置。
89
89
 
90
- ## 注意事项
90
+ ### 注意事项
91
91
 
92
92
  - 不建议同时使用 `package.json` 和 `modern.config.js` 进行配置。如果同时使用了两者并出现配置冲突,Modern.js 会在命令行进行提示。
93
93
  - `@modern-js/runtime` 导出了同名的 [defineConfig](/apis/app/runtime/app/define-config) API,请注意区分。
94
+
95
+ ## 本地调试配置
96
+
97
+ 为了便于本地调试配置,Modern.js 支持在项目根目录下创建 `modern.config.local.(ts|js|mjs)` 文件,用于覆盖 `modern.config.(ts|js|mjs)` 中的配置选项。
98
+
99
+ ### 示例
100
+
101
+ 比如,项目的 `modern.config.ts` 中配置了端口号为 `3000`:
102
+
103
+ ```ts title="modern.config.ts"
104
+ import { defineConfig } from '@modern-js/app-tools';
105
+
106
+ export default defineConfig({
107
+ server: {
108
+ port: 3000,
109
+ },
110
+ });
111
+ ```
112
+
113
+ 如果你在本地调试时需要将端口号修改为 `3001`,但是又不希望修改当前项目的 `modern.config.ts` 文件,那么可以创建一个 `modern.config.local.ts` 文件,并添加以下配置:
114
+
115
+ ```ts title="modern.config.local.ts"
116
+ import { defineConfig } from '@modern-js/app-tools';
117
+
118
+ export default defineConfig({
119
+ server: {
120
+ port: 3001,
121
+ },
122
+ });
123
+ ```
124
+
125
+ `modern.config.local.ts` 文件中的配置会与 `modern.config.ts` 中的配置进行深层合并,并覆盖 `modern.config.ts` 中的配置选项,因此 `server.port` 会被覆盖为 `3001`。
126
+
127
+ ### 注意事项
128
+
129
+ 在使用 `modern.config.local.ts` 时,请注意以下事项:
130
+
131
+ - `modern.config.local.ts` 文件仅会在执行 `modern dev` 或 `modern start` 命令时被加载,当执行 `modern build` 时不会被加载。
132
+ - `modern.config.local.ts` 文件的优先级不仅高于 `modern.config.ts`,也高于 `package.json` 中的 `modernConfig` 字段。
133
+ - 由于 `modern.config.local.ts` 仅在本地调试时使用,因此不建议将其提交到代码仓库中,请确保项目的 `.gitignore` 文件中包含 `modern.config.local.ts` 等文件。
134
+
135
+ ```bash title=".gitingore"
136
+ modern.config.local.ts
137
+ modern.config.local.js
138
+ modern.config.local.mjs
139
+ ```
@@ -41,7 +41,7 @@ export default () => {
41
41
  };
42
42
  ```
43
43
 
44
- :::info
44
+ :::info
45
45
  Modern.js 生成器已经在 `tsconfig.json` 中配置 `@api` 别名,因此可以直接通过别名的方式引入函数。
46
46
 
47
47
  :::
@@ -102,7 +102,7 @@ Modern.js 中,BFF 函数对应的路由系统是基于文件系统实现的,
102
102
 
103
103
  Modern.js 的 BFF 函数需要遵循 RESTful API 标准来定义, 遵循 HTTP Method 规范,并且不允许自由定义参数。
104
104
 
105
- :::info
105
+ :::info
106
106
  假设函数允许自由定义参数,产出的路由必然由**私有协议**进行调用(原因是无法区分请求参数与请求体),而无法实现任意的 RESTful API。
107
107
 
108
108
  如果服务仅用于应用本身不存在问题,但它**不标准的接口定义**无法融入更大的体系。 在多个系统共同工作的情况下(例如 BFF 低码搭建),会导致其他系统也需要遵循**私有协议**。
@@ -141,7 +141,7 @@ export const post = async () => {
141
141
 
142
142
  - 可以在一个文件中定义多个不同 Method 的函数,但如果定义多个相同 Method 的函数,则只有第一个会生效。
143
143
 
144
- :::info
144
+ :::info
145
145
  需要注意的是,定义的函数都应该是异步的,与函数调用时类型有关,后面会提到。
146
146
 
147
147
  :::
@@ -74,7 +74,7 @@ function MyComponent() {
74
74
 
75
75
  `loadable` 更多用法请见 [loadable API](/apis/app/runtime/utility/loadable)。
76
76
 
77
- :::info
77
+ :::info
78
78
  `loadable` 开箱即用的支持 SSR,但不支持和 Suspense 一起使用,如果是 CSR 项目可以使用 [loadable.lazy](https://loadable-components.com/docs/suspense/)
79
79
 
80
80
  :::
@@ -31,7 +31,7 @@ Modern.js 在编译时默认通过 [core-js](https://github.com/zloirock/core-js
31
31
 
32
32
  默认情况下会根据项目 Browserslist 的设置情况引入所需的 Polyfill 代码, 这样基本不用再担心项目源码和第三方依赖的 Polyfill 问题了,但是因为包含了一些没有用到的 Polyfill 代码,所以最终的包大小可能会有所增加。
33
33
 
34
- :::info
34
+ :::info
35
35
  对于明确第三方依赖不需要 Polyfill 的场景,可以设置 [`output.polyfill`](/configure/app/output/polyfill) 为 `usage`, 这样 Babel 编译时只会根据代码中使用到的语法引入 Polyfill 代码。
36
36
 
37
37
  :::
@@ -16,7 +16,7 @@ sidebar_position: 8
16
16
 
17
17
  多数问题会被 ESLint 规则的自动修复功能或 [Prettier](https://prettier.io/) 的代码格式化功能(已被集成到 ESLint 里)自动解决,开发者不需要关心问题的细节和解决方式。
18
18
 
19
- :::info
19
+ :::info
20
20
  主要在 IDE 保存文件的环节执行这种自动修复,少数漏网之鱼会在提交代码环节被自动修复。
21
21
 
22
22
  :::
@@ -45,7 +45,7 @@ pnpm run lint:error
45
45
  /* eslint-enable filenames/match-exported */
46
46
  ```
47
47
 
48
- :::info
48
+ :::info
49
49
  在 VS Code 编辑器里输入 eslint,会自动出现关于 "eslint-disable" 的提示框,选择提示选项生成对应注释对。
50
50
 
51
51
  :::
@@ -76,7 +76,7 @@ pnpm run lint:error
76
76
 
77
77
  Modern.js 的应用工程、模块工程,源代码目录里都会默认有这个配置文件,是针对 Universal JS 代码设计的。
78
78
 
79
- :::info
79
+ :::info
80
80
  Universal JS 代码是既能浏览器端也能在服务器端运行的代码。
81
81
 
82
82
  :::
@@ -66,7 +66,7 @@ Warning: Expected server HTML to contain a matching <div> in <div>.
66
66
 
67
67
  这是 React 在客户端执行 hydrate 逻辑时,发现渲染结果与 SSR 渲染结果不一致造成的。虽然页面表现正常,但在复杂应用中,很有可能因此出现 DOM 层级混乱、样式混乱等问题。
68
68
 
69
- :::info
69
+ :::info
70
70
  关于 hydrate (注水)逻辑请参考[这里](https://reactjs.org/docs/react-dom.html#hydrate)。
71
71
 
72
72
  :::
@@ -13,7 +13,7 @@ Modern.js 允许在 JS 和 CSS 中使用别名导入自定义目录下的模块
13
13
  }
14
14
  ```
15
15
 
16
- :::info
16
+ :::info
17
17
  在开启可选功能时,生成器也会动态的添加内置别名,例如启用 BFF 时默认会添加 `@api` 别名。
18
18
 
19
19
  :::
@@ -6,7 +6,7 @@ sidebar_position: 2
6
6
 
7
7
  **Modern.js 的构建能力由 [Modern.js Builder](https://modernjs.dev/builder) 提供。**
8
8
 
9
- Modern.js Builder 是 Modern.js 体系的核心组件之一,它是一个面向现代 Web 开发场景的构建引擎,可以脱离 Modern.js 被独立使用。Modern.js Builder 同时支持 webpack 和 rspack 等多种打包工具,默认情况下使用最成熟的 webpack 进行打包。
9
+ Modern.js Builder 是 Modern.js 体系的核心组件之一,它是一个面向 Web 开发场景的构建引擎,可以脱离 Modern.js 被独立使用。Modern.js Builder 同时支持 webpack 和 Rspack 等多种打包工具,默认情况下使用最成熟的 webpack 进行打包。
10
10
 
11
11
  ## 构建架构
12
12
 
@@ -14,7 +14,7 @@ Modern.js Builder 是 Modern.js 体系的核心组件之一,它是一个面向
14
14
 
15
15
  - 上层研发框架:Modern.js。
16
16
  - 通用构建引擎:Modern.js Builder。
17
- - 底层打包工具:webpack 和 rspack
17
+ - 底层打包工具:webpack 和 Rspack
18
18
 
19
19
  <img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/zq-uylkvT/ljhwZthlaukjlkulzlp/builder-layers-1117.png" style={{ maxWidth: '540px' }} />
20
20
 
@@ -10,7 +10,7 @@ sidebar_position: 3
10
10
 
11
11
  1. [Autoprefixer](https://github.com/postcss/autoprefixer) 根据需要支持的浏览器范围,会自动为 CSS 规则添加需要的浏览器厂商前缀。Modern.js 默认支持的浏览器范围为:`['> 0.01%', 'not dead', 'not op_mini all']`。
12
12
 
13
- :::info 注意
13
+ :::info
14
14
  - 【支持的浏览器范围为:`> 0.01%`】是指浏览器市场份额大于 0.01%。
15
15
  - `not dead` 是指不包含官方不再支持的浏览器和过去24个月没有更新的浏览器。
16
16
  - `not op_mini all` 是指不包含 Opera Mini。
@@ -217,7 +217,7 @@ Modern.js 也支持 HTML 语法。默认情况下,Modern.js 的应用工程中
217
217
 
218
218
  在 `config/html/` 目录下,创建 `index.html` 文件,该文件将替代默认的 HTML 模板。
219
219
 
220
- :::info
220
+ :::info
221
221
  内部默认 HTML 模板可以在 `node_modules/.modern-js/${entryName}/index.html` 中查看。
222
222
 
223
223
  :::
@@ -76,7 +76,7 @@ pipeline.run(5); // 6
76
76
 
77
77
  上面的例子就是以 Pipeline 为例描述的,这里就不赘述了,在 Pipeline 这个大类中,提供了两个小类:Sync 和 Async,顾名思义,它们的区别就是管理的函数的类型是 Sync 的还是 Async 的。
78
78
 
79
- :::info
79
+ :::info
80
80
  当 Pipeline 中没有函数或者所有函数都调用了 `next` 函数,则就需要在运行的时候提供:
81
81
 
82
82
  ```ts
@@ -53,36 +53,36 @@ scenes 配置只能在 `@modern-js/create` 的 `--config` 参数中使用,不
53
53
 
54
54
  ### noNeedInstall
55
55
 
56
- - Type: `boolean`
57
- - Default: `false`
56
+ - **类型:** `boolean`
57
+ - **默认值:** `false`
58
58
 
59
59
  是否跳过依赖安装。
60
60
 
61
61
  ### noNeedGit
62
62
 
63
- - Type: `boolean`
64
- - Default: `false`
63
+ - **类型:** `boolean`
64
+ - **默认值:** `false`
65
65
 
66
66
  是否跳过 git 初始化和提交初始 commit。
67
67
 
68
68
  ### successInfo
69
69
 
70
- - Type: `string`
71
- - Default: 不同工程方案的命令操作提示
70
+ - **类型:** `string`
71
+ - **默认值:** 不同工程方案的命令操作提示
72
72
 
73
73
  自定义创建项目成功的提示信息。
74
74
 
75
75
  ### isMonorepoSubProject
76
76
 
77
- - Type: `boolean`
78
- - Default: `false`
77
+ - **类型:** `boolean`
78
+ - **默认值:** `false`
79
79
 
80
80
  是否为 Monorepo 子项目。
81
81
 
82
82
  ### isTest
83
83
 
84
- - Type: `boolean`
85
- - Default: `false`
84
+ - **类型:** `boolean`
85
+ - **默认值:** `false`
86
86
 
87
87
  作用于应用项目,标识是否为测试项目。
88
88
 
@@ -91,8 +91,8 @@ scenes 配置只能在 `@modern-js/create` 的 `--config` 参数中使用,不
91
91
 
92
92
  ### isPublic
93
93
 
94
- - Type: `boolean`
95
- - Default: `false`
94
+ - **类型:** `boolean`
95
+ - **默认值:** `false`
96
96
 
97
97
  作用于模块 (Module) 项目,标识是否需要对外发布。
98
98
 
@@ -45,7 +45,7 @@ context.addInputBefore('packageManager', {
45
45
  });
46
46
  ```
47
47
 
48
- :::info 注意事项
48
+ :::info意事项
49
49
 
50
50
  1. 添加问题的 key 不能和 Modern.js 提供的项目类型自身的问题的 key 重复
51
51
 
@@ -16,7 +16,7 @@ Modern.js 微前端方案是基于 [Garfish](https://garfishjs.org/) 封装的
16
16
  **Modern.js** 子应用编译后会生成标准的 [Garfish 子应用导出](https://www.garfishjs.org/guide/start#2%E5%AF%BC%E5%87%BA-provider-%E5%87%BD%E6%95%B0)。
17
17
  所以可以直接接入标准的微前端主应用。
18
18
 
19
- :::info
19
+ :::info
20
20
  子应用是 **Modern.js**,主应用使用的原生 Garfish 微前端时,**子应用调试模式** 不可用。
21
21
 
22
22
  :::
@@ -80,7 +80,7 @@ function Counter() {
80
80
 
81
81
  根据 `a`、`b`、`c` 三个不同的字段分别生成 `setA`、`setB`、`setC` 三个 Actions。
82
82
 
83
- :::info
83
+ :::info
84
84
  当用户自定义的 Action 和 Modern.js 自动生成的 Action 名字一致时,用户自定义的 Action 优先级更高。例如,
85
85
  在 `countModel` 中已经自定义 `setA` 这个 Action,调用 `actions.setA()` 时,最终执行的是用户自定义的 `setA`。
86
86
 
@@ -23,7 +23,7 @@ const fooModel = model('foo').define({
23
23
  });
24
24
  ```
25
25
 
26
- :::info
26
+ :::info
27
27
  - Model 中的 Action 中不能包含有副作用的逻辑,如请求 HTTP 接口,访问 localStorage 等。
28
28
  - `setValue` 内部直接修改了入参 State,看起来是违反了纯函数的定义,实际上 Reduck 内部使用 [immer](https://github.com/immerjs/immer) 来修改不可变对象,保证了这种写法不会影响对象的不可变性,所以 `setValue` 仍然是一个纯函数。当然,你也可以直接在 Action 中返回一个新对象,不过这样的写法会更加复杂一些。
29
29
 
@@ -187,7 +187,7 @@ const todoModel = model('todo').define((context, utils) => ({
187
187
  }));
188
188
  ```
189
189
 
190
- :::info
190
+ :::info
191
191
  可以使用 `use` 函数加载其它 Model(包括 Model 自身),实现 [Model 间通信](/guides/topic-detail/model/model-communicate)。
192
192
 
193
193
  :::
@@ -16,7 +16,7 @@ Reduck 在 MVC 模式中,扮演 M(Model) 的角色,React UI Component 对应
16
16
 
17
17
  Modern.js 的状态管理解决方案,是通过内置 Reduck 实现的。在 Modern.js 中使用 Reduck,不仅免去了手动集成的环节,而且所有 Reduck API 都可以从 Modern.js 的 Runtime 包中直接导入使用,具有更好的一致性体验。
18
18
 
19
- :::info
19
+ :::info
20
20
  1. Modern.js 中使用 Reduck API,需要先设置 [runtime.state](/configure/app/runtime/state) 以启用状态管理插件。
21
21
  2. Reduck 也可以脱离 Modern.js 作为状态管理库[单独使用](/guides/topic-detail/model/use-out-of-modernjs)。
22
22
 
@@ -101,7 +101,7 @@ function Counter() {
101
101
 
102
102
  `useModel` 获取 `countModel` 的 `state` 和 `actions`,组件展示当前计算器的值,点击 `add` 按钮,计数器自增 1。
103
103
 
104
- :::info
104
+ :::info
105
105
  由于使用的案例比较简单,这里并没有严格按照 MVC 模式进行分层,组件 `Counter` 同时起到了 V 和 C 两层的作用。
106
106
 
107
107
  :::
@@ -35,7 +35,7 @@ describe('test model', () => {
35
35
  });
36
36
  ```
37
37
 
38
- :::info
38
+ :::info
39
39
  这里使用的 [`createStore`](/apis/app/runtime/model/create-store) 是从 `@modern-js/runtime/testing` 导入的,内部会使用 [`runtime.state`](/configure/app/runtime/state) 的配置去创建 `store`。
40
40
 
41
41
  :::
@@ -111,7 +111,7 @@ const [state, actions] = useModel(
111
111
 
112
112
  通过 `useStaticModel` 获取 Model ,将 Model 中的状态作为静态状态使用。可以保证组件每次访问到的 Model 的 State 都是最新值,但是 Model 的 State 的变化,并不会引起当前组件的重新渲染。
113
113
 
114
- :::info
114
+ :::info
115
115
  `useStaticModel` 的使用方式和 `useModel` 完全一致。
116
116
 
117
117
  :::
@@ -169,7 +169,7 @@ function ThreeComponent() {
169
169
 
170
170
  通过 `useLocalModel` 获取 Model ,将 Model 中的状态作为局部状态使用。此时 Model State 的变化,只会引起当前组件的重新渲染,但是不会引起其他使用了该 Model 的组件重新渲染。效果和通过 React 的 `useState` 管理状态类似,但是可以将状态的管理逻辑从组件中解耦,统一收敛到 Model 层。
171
171
 
172
- :::info
172
+ :::info
173
173
  `useLocalModel` 的使用方式和 `useModel` 完全一致。
174
174
 
175
175
  :::
@@ -241,7 +241,7 @@ setInterval(() => {
241
241
 
242
242
  完整的示例代码可以在[这里](https://github.com/modern-js-dev/modern-js-examples/tree/main/series/tutorials/runtime-api/model/counter-model-outof-react)查看。
243
243
 
244
- :::info
244
+ :::info
245
245
  如果是通过 [`createStore`](/apis/app/runtime/model/create-store) 手动创建的 Store 对象,无需通过 `useStore` 在组件内获取,即可直接使用。
246
246
 
247
247
  :::
@@ -34,12 +34,12 @@ pnpm run new
34
34
  模块(内部)
35
35
  ```
36
36
 
37
- :::info
37
+ :::info
38
38
  「应用」与「应用(测试)」都是「应用」类型的项目,区别是「应用」类型的子项目会创建在 `./apps` 目录下,而 「应用(测试)」类型的子项目会创建在 `./examples` 目录下。
39
39
 
40
40
  :::
41
41
 
42
- :::info
42
+ :::info
43
43
  「模块」与「模块(内部)」都是「模块」类型的项目,区别之一是「模块」类型的子项目会创建在 `./packages` 目录下,而「模块(内部)」类型的子项目会创建在 `./features` 目录下。
44
44
 
45
45
  对于「模块」类型的子项目允许被发布到外部(例如 npm),而对于「模块(内部)」的子项目则可以在应用项目中直接使用其源码(该特性是「模块」项目不具备的,应用项目对于「模块(内部)」子项目做了特殊处理),因此这类子项目不需要发布到外部。
@@ -109,7 +109,7 @@ export default App;
109
109
 
110
110
  到此为止我们创建了一个可以被发布到外部的组件项目、一个转换字符串的内部模块项目以及一个使用组件和内部模块的应用项目,如果直接运行应用项目还暂时无法正常使用。接下来将要介绍如何让它们能够互相联调使用,成功的使应用子项目 `apps/app` 正常运行。
111
111
 
112
- :::info
112
+ :::info
113
113
  启动 `apps/app` 项目之前需要先构建(`pnpm run build`) `packages/component`。
114
114
 
115
115
  :::
@@ -130,7 +130,7 @@ pnpm add components
130
130
  pnpm add internal-lib -D
131
131
  ```
132
132
 
133
- :::info
133
+ :::info
134
134
  注意这里将 internal-lib 作为 `apps/app` 项目的开发依赖,因为在构建环境会被打包到构建产物中。
135
135
 
136
136
  :::
@@ -48,7 +48,7 @@ function App() {
48
48
 
49
49
  可以看到 Ant Design 导出的组件,已经具备了完整的样式。
50
50
 
51
- :::info
51
+ :::info
52
52
  Modern.js 会[自动按需导入 Ant Design 组件需要的 CSS](https://github.com/ant-design/babel-plugin-import)。
53
53
 
54
54
  :::
@@ -94,7 +94,7 @@ export default Avatar;
94
94
 
95
95
  执行 `pnpm run dev`,运行结果应该是一样的。
96
96
 
97
- :::info
97
+ :::info
98
98
  采用目录形式 `Avatar/index.tsx` 而不是单文件形式 `Avatar.tsx` 的原因是,之后可以方便的在目录内部增加子文件,包括专用的资源(图片等)、专用子组件、CSS 文件等。
99
99
 
100
100
  :::
@@ -293,7 +293,7 @@ import '../styles/utils.css';
293
293
  }
294
294
  ```
295
295
 
296
- :::info
296
+ :::info
297
297
  Modern.js 集成了 [PostCSS](/guides/basic-features/css/postcss),支持现代 CSS 语法特性,比如 [custom properties](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties)。
298
298
 
299
299
  :::
@@ -314,7 +314,7 @@ Modern.js 集成了 [PostCSS](/guides/basic-features/css/postcss),支持现代
314
314
 
315
315
  ![design2](https://lf3-static.bytednsdoc.com/obj/eden-cn/aphqeh7uhohpquloj/modern-js/docs/06/result3.png)
316
316
 
317
- :::info
317
+ :::info
318
318
  此处只是为了演示 Utility Class 用法。真实项目中,在有 Tailwind CSS 的情况下,这种 Utility Class 没什么价值,应该通过配置 Design System 的 [**theme**](https://tailwindcss.com/docs/customizing-colors) 来增加字体颜色。
319
319
 
320
320
  `utils.css` 也可以写成 `utils.scss` 或 `utils.less`,Modern.js 对 SCSS 和 Less 同样提供开箱即用的支持。
@@ -84,7 +84,7 @@ function Index() {
84
84
  }
85
85
  ```
86
86
 
87
- :::info
87
+ :::info
88
88
  Modern.js 默认集成了 react-helmet,也可以结合 SSR 使用,满足 SEO 需求。
89
89
 
90
90
  :::
@@ -10,7 +10,7 @@ title: 添加业务模型(状态管理)
10
10
 
11
11
  因此会开始编写一些跟 UI 完全无关的业务逻辑,如果继续写在组件代码中,会产生越来越多的面条式代码。为此,我们引入了一种叫做 **业务模型(Model)** 的代码模块,将这些业务逻辑和 UI 解耦。
12
12
 
13
- :::info 注意
13
+ :::info
14
14
  使用状态管理相关 API,需要先启用配置项 [runtime.state](/docs/configure/app/runtime/state):
15
15
 
16
16
  ```ts title="modern.config.ts"