@modern-js/main-doc 2.0.0-beta.0 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/_category_.json +8 -0
  3. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/build.md +44 -0
  4. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/dev.md +31 -0
  5. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/index.md +12 -0
  6. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/inspect.md +39 -0
  7. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/lint.md +22 -0
  8. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/new.md +59 -0
  9. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/start.md +32 -0
  10. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/test.md +36 -0
  11. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/upgrade.md +21 -0
  12. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/_category_.json +8 -0
  13. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/_category_.json +4 -0
  14. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/framework/_category_.json +4 -0
  15. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/framework/lambda.md +54 -0
  16. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/functions/_category_.json +4 -0
  17. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/functions/api.md +78 -0
  18. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/functions/app.md +12 -0
  19. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/functions/common.md +10 -0
  20. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/test.md +10 -0
  21. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/_category_.json +4 -0
  22. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/html.md +8 -0
  23. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/icon.md +15 -0
  24. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/mock.md +6 -0
  25. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/public.md +28 -0
  26. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/storybook.md +12 -0
  27. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/upload.md +42 -0
  28. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/index.md +7 -0
  29. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/modern-config.md +8 -0
  30. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/server/_category_.json +4 -0
  31. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/server/index_.md +14 -0
  32. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/server/test.md +10 -0
  33. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/shared.md +6 -0
  34. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/_category_.json +4 -0
  35. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/app.md +45 -0
  36. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/index_.md +34 -0
  37. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/pages.md +180 -0
  38. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/stories.md +12 -0
  39. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/test.md +12 -0
  40. package/en/docusaurus-plugin-content-docs/current/apis/app/overview.md +12 -0
  41. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/_category_.json +9 -0
  42. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/app/_category_.json +4 -0
  43. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/app/define-config.md +60 -0
  44. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/bff/_category_.json +4 -0
  45. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/bff/hook.md +43 -0
  46. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/bff/use-context.md +36 -0
  47. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/_category_.json +5 -0
  48. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/bootstrap.md +55 -0
  49. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/create-app.md +47 -0
  50. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/use-loader.md +83 -0
  51. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/use-module-apps.md +101 -0
  52. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/use-runtime-context.md +59 -0
  53. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/default-alias.md +25 -0
  54. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/env.md +72 -0
  55. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/index.md +12 -0
  56. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/Provider.md +35 -0
  57. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/_category_.json +4 -0
  58. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/auto-actions.md +120 -0
  59. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/connect.md +140 -0
  60. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-app.md +73 -0
  61. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-store.md +62 -0
  62. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/handle-effect.md +105 -0
  63. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/model_.md +197 -0
  64. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-local-model.md +27 -0
  65. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-model.md +89 -0
  66. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-static-model.md +49 -0
  67. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-store.md +48 -0
  68. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/_category_.json +4 -0
  69. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/abstract.md +26 -0
  70. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/hook-api.md +896 -0
  71. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/hook.md +170 -0
  72. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/plugin-api.md +117 -0
  73. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/router/_category_.json +4 -0
  74. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/router/router.md +492 -0
  75. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/ssr/_category_.json +4 -0
  76. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/ssr/no-ssr.md +44 -0
  77. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/ssr/pre-render.md +91 -0
  78. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/testing/_category_.json +4 -0
  79. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/testing/act.md +34 -0
  80. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/testing/cleanup.md +38 -0
  81. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/testing/render.md +72 -0
  82. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/testing/renderApp.md +33 -0
  83. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/utility/_category_.json +4 -0
  84. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/utility/css-in-js.md +42 -0
  85. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/utility/head.md +39 -0
  86. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/utility/loadable.md +85 -0
  87. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/web-server/_category_.json +4 -0
  88. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/web-server/hook.md +131 -0
  89. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/web-server/middleware.md +106 -0
  90. package/en/docusaurus-plugin-content-docs/current/configure/app/bff/fetcher.md +28 -0
  91. package/en/docusaurus-plugin-content-docs/current/configure/app/bff/prefix.md +33 -0
  92. package/en/docusaurus-plugin-content-docs/current/configure/app/bff/proxy.md +75 -0
  93. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/dev/asset-prefix.md +0 -1
  94. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/dev/hmr.md +0 -1
  95. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/dev/https.md +0 -1
  96. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/dev/port.md +0 -1
  97. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/dev/progress-bar.md +0 -1
  98. package/en/docusaurus-plugin-content-docs/current/configure/app/dev/proxy.md +80 -0
  99. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/dev/start-url.md +0 -1
  100. package/en/docusaurus-plugin-content-docs/current/configure/app/dev/with-master-app.md +32 -0
  101. package/en/docusaurus-plugin-content-docs/current/configure/app/experiments/lazy-compilation.md +12 -0
  102. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/app-icon.md +0 -1
  103. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/crossorigin.md +0 -1
  104. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/disable-html-folder.md +0 -1
  105. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/favicon-by-entries.md +0 -1
  106. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/favicon.md +0 -1
  107. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/inject-by-entries.md +0 -1
  108. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/inject.md +0 -1
  109. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/meta-by-entries.md +0 -1
  110. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/meta.md +0 -1
  111. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/mount-id.md +0 -1
  112. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/template-by-entries.md +0 -1
  113. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/template-parameters-by-entries.md +0 -1
  114. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/template-parameters.md +0 -1
  115. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/template.md +0 -1
  116. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/title-by-entries.md +0 -1
  117. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/html/title.md +0 -1
  118. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/asset-prefix.md +0 -1
  119. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/assets-retry.md +0 -1
  120. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/charset.md +0 -1
  121. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/clean-dist-path.md +0 -1
  122. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/convert-to-rem.md +0 -1
  123. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/copy.md +0 -1
  124. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/css-module-local-ident-name.md +0 -1
  125. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/data-uri-limit.md +0 -1
  126. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/disable-css-module-extension.md +0 -1
  127. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/disable-filename-hash.md +0 -1
  128. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/disable-inline-runtime-chunk.md +0 -1
  129. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/disable-minimize.md +0 -1
  130. package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-node-polyfill.md +20 -0
  131. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/disable-source-map.md +0 -1
  132. package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-ts-checker.md +12 -0
  133. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/dist-path.md +0 -1
  134. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/enable-asset-fallback.md +0 -1
  135. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/enable-asset-manifest.md +0 -1
  136. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/enable-css-module-tsdeclaration.md +0 -1
  137. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/enable-inline-scripts.md +0 -1
  138. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/enable-inline-styles.md +0 -1
  139. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/enable-latest-decorators.md +0 -1
  140. package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-modern-mode.md +34 -0
  141. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/externals.md +0 -1
  142. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/filename.md +0 -1
  143. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/legal-comments.md +0 -1
  144. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/override-browserslist.md +0 -1
  145. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/polyfill.md +0 -1
  146. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/output/svg-default-export.md +0 -1
  147. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/performance/build-cache.md +0 -1
  148. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/performance/bundle-analyze.md +0 -1
  149. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/performance/chunk-split.md +0 -1
  150. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/performance/print-file-size.md +0 -1
  151. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/performance/profile.md +0 -1
  152. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/performance/remove-console.md +0 -1
  153. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/performance/remove-moment-locale.md +0 -1
  154. package/en/docusaurus-plugin-content-docs/current/configure/app/plugins.md +74 -0
  155. package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/intro.md +91 -0
  156. package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/master-app.md +60 -0
  157. package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/router.md +19 -0
  158. package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/state.md +41 -0
  159. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/security/sri.md +0 -1
  160. package/en/docusaurus-plugin-content-docs/current/configure/app/server/base-url.md +33 -0
  161. package/en/docusaurus-plugin-content-docs/current/configure/app/server/port.md +18 -0
  162. package/en/docusaurus-plugin-content-docs/current/configure/app/server/public-routes.md +26 -0
  163. package/en/docusaurus-plugin-content-docs/current/configure/app/server/routes.md +91 -0
  164. package/en/docusaurus-plugin-content-docs/current/configure/app/server/ssr-by-entries.md +28 -0
  165. package/en/docusaurus-plugin-content-docs/current/configure/app/server/ssr.md +20 -0
  166. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/source/alias.md +0 -1
  167. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/source/compile-js-data-uri.md +0 -1
  168. package/en/docusaurus-plugin-content-docs/current/configure/app/source/config-dir.md +23 -0
  169. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/source/define.md +0 -1
  170. package/en/docusaurus-plugin-content-docs/current/configure/app/source/design-system.md +1150 -0
  171. package/en/docusaurus-plugin-content-docs/current/configure/app/source/disable-default-entries.md +28 -0
  172. package/en/docusaurus-plugin-content-docs/current/configure/app/source/enable-async-entry.md +50 -0
  173. package/en/docusaurus-plugin-content-docs/current/configure/app/source/entries-dir.md +38 -0
  174. package/en/docusaurus-plugin-content-docs/current/configure/app/source/entries.md +62 -0
  175. package/en/docusaurus-plugin-content-docs/current/configure/app/source/exclude.md +12 -0
  176. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/source/global-vars.md +0 -1
  177. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/source/include.md +0 -1
  178. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/source/module-scopes.md +0 -1
  179. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/source/pre-entry.md +0 -1
  180. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/source/resolve-extension-prefix.md +0 -1
  181. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/source/resolve-main-fields.md +0 -1
  182. package/en/docusaurus-plugin-content-docs/current/configure/app/testing/transformer.md +18 -0
  183. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/autoprefixer.md +0 -1
  184. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/babel.md +0 -1
  185. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/css-extract.md +0 -1
  186. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/css-loader.md +0 -1
  187. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/dev-server.md +0 -1
  188. package/en/docusaurus-plugin-content-docs/current/configure/app/tools/esbuild.md +61 -0
  189. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/html-plugin.md +0 -1
  190. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/inspector.md +0 -1
  191. package/en/docusaurus-plugin-content-docs/current/configure/app/tools/jest.md +39 -0
  192. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/less.md +0 -1
  193. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/minify-css.md +0 -1
  194. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/postcss.md +0 -1
  195. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/pug.md +0 -1
  196. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/sass.md +0 -1
  197. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/style-loader.md +0 -1
  198. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/styled-components.md +0 -1
  199. package/en/docusaurus-plugin-content-docs/current/configure/app/tools/tailwindcss.md +47 -0
  200. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/terser.md +0 -1
  201. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/ts-checker.md +0 -1
  202. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/ts-loader.md +0 -1
  203. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/webpack-chain.md +0 -1
  204. package/en/{configure → docusaurus-plugin-content-docs/current/configure}/app/tools/webpack.md +0 -1
  205. package/en/docusaurus-plugin-content-docs/current/configure/app/usage.md +92 -0
  206. package/en/{tutorials → docusaurus-plugin-content-docs/current/tutorials}/foundations/_category_.json +0 -0
  207. package/en/{tutorials → docusaurus-plugin-content-docs/current/tutorials}/foundations/basic.md +0 -0
  208. package/en/{tutorials → docusaurus-plugin-content-docs/current/tutorials}/foundations/introduction.md +0 -0
  209. package/en/docusaurus-plugin-content-docs/current.json +262 -0
  210. package/package.json +7 -5
  211. package/scripts/config.ts +98 -0
  212. package/scripts/summary.en.json +1 -0
  213. package/scripts/summary.zh.json +1 -0
  214. package/scripts/sync.ts +26 -5
  215. package/zh/apis/app/commands/build.md +2 -2
  216. package/zh/apis/app/commands/dev.md +1 -1
  217. package/zh/apis/app/commands/index.md +1 -1
  218. package/zh/apis/app/commands/lint.md +2 -2
  219. package/zh/apis/app/commands/new.md +1 -1
  220. package/zh/apis/app/commands/start.md +1 -1
  221. package/zh/apis/app/commands/test.md +1 -1
  222. package/zh/apis/app/commands/upgrade.md +0 -2
  223. package/zh/apis/app/hooks/api/framework/_category_.json +1 -1
  224. package/zh/apis/app/hooks/api/framework/lambda.md +8 -33
  225. package/zh/apis/app/hooks/api/functions/_category_.json +1 -1
  226. package/zh/apis/app/hooks/api/functions/api.md +29 -2
  227. package/zh/apis/app/hooks/api/functions/app.md +5 -3
  228. package/zh/apis/app/hooks/api/functions/common.md +3 -5
  229. package/zh/apis/app/hooks/api/test.md +2 -4
  230. package/zh/apis/app/hooks/config/html.md +1 -3
  231. package/zh/apis/app/hooks/config/icon.md +2 -2
  232. package/zh/apis/app/hooks/config/mock.md +2 -8
  233. package/zh/apis/app/hooks/config/public.md +2 -4
  234. package/zh/apis/app/hooks/config/storybook.md +2 -4
  235. package/zh/apis/app/hooks/config/upload.md +1 -7
  236. package/zh/apis/app/hooks/modern-config.md +1 -3
  237. package/zh/apis/app/hooks/server/index_.md +12 -0
  238. package/zh/apis/app/hooks/server/test.md +3 -3
  239. package/zh/apis/app/hooks/shared.md +1 -2
  240. package/zh/apis/app/hooks/src/app.md +8 -4
  241. package/zh/apis/app/hooks/src/{index.md → index_.md} +2 -2
  242. package/zh/apis/app/hooks/src/pages.md +3 -4
  243. package/zh/apis/app/hooks/src/stories.md +2 -2
  244. package/zh/apis/app/hooks/src/test.md +1 -1
  245. package/zh/apis/app/overview.md +1 -1
  246. package/zh/apis/app/runtime/app/_category_.json +2 -2
  247. package/zh/apis/app/runtime/app/define-config.md +14 -10
  248. package/zh/apis/app/runtime/bff/_category_.json +4 -0
  249. package/zh/apis/app/runtime/bff/hook.md +43 -0
  250. package/zh/apis/app/runtime/bff/use-context.md +36 -0
  251. package/zh/apis/app/runtime/core/_category_.json +4 -0
  252. package/zh/apis/app/runtime/core/bootstrap.md +55 -0
  253. package/zh/apis/app/runtime/core/create-app.md +47 -0
  254. package/zh/apis/app/runtime/core/use-loader.md +83 -0
  255. package/zh/apis/app/runtime/core/use-module-apps.md +101 -0
  256. package/zh/apis/app/runtime/core/use-runtime-context.md +59 -0
  257. package/zh/apis/app/runtime/default-alias.md +4 -7
  258. package/zh/apis/app/runtime/env.md +22 -20
  259. package/zh/apis/app/runtime/model/Provider.md +6 -8
  260. package/zh/apis/app/runtime/model/_category_.json +1 -1
  261. package/zh/apis/app/runtime/model/auto-actions.md +1 -2
  262. package/zh/apis/app/runtime/model/connect.md +8 -5
  263. package/zh/apis/app/runtime/model/create-app.md +3 -4
  264. package/zh/apis/app/runtime/model/create-store.md +5 -3
  265. package/zh/apis/app/runtime/model/handle-effect.md +5 -5
  266. package/zh/apis/app/runtime/model/model_.md +3 -3
  267. package/zh/apis/app/runtime/model/use-local-model.md +2 -2
  268. package/zh/apis/app/runtime/model/use-model.md +6 -7
  269. package/zh/apis/app/runtime/model/use-static-model.md +2 -2
  270. package/zh/apis/app/runtime/model/use-store.md +3 -3
  271. package/zh/apis/app/runtime/router/_category_.json +4 -0
  272. package/zh/apis/app/runtime/{container → router}/router.md +0 -0
  273. package/zh/apis/app/runtime/ssr/_category_.json +4 -0
  274. package/zh/apis/app/runtime/ssr/no-ssr.md +41 -0
  275. package/zh/apis/app/runtime/ssr/pre-render.md +91 -0
  276. package/zh/apis/app/runtime/testing/_category_.json +1 -1
  277. package/zh/apis/app/runtime/testing/act.md +8 -8
  278. package/zh/apis/app/runtime/testing/cleanup.md +10 -9
  279. package/zh/apis/app/runtime/testing/render.md +43 -23
  280. package/zh/apis/app/runtime/testing/renderApp.md +8 -8
  281. package/zh/apis/app/runtime/utility/_category_.json +1 -1
  282. package/zh/apis/app/runtime/utility/css-in-js.md +17 -35
  283. package/zh/apis/app/runtime/{app → utility}/head.md +6 -10
  284. package/zh/apis/app/runtime/utility/{loadable/loadable_.md → loadable.md} +29 -56
  285. package/zh/apis/app/runtime/web-server/_category_.json +1 -1
  286. package/zh/apis/app/runtime/web-server/hook.md +100 -90
  287. package/zh/apis/app/runtime/web-server/middleware.md +106 -0
  288. package/zh/apis/monorepo/commands/bump.md +1 -1
  289. package/zh/apis/monorepo/commands/change.md +1 -1
  290. package/zh/apis/monorepo/commands/clear.md +1 -1
  291. package/zh/apis/monorepo/commands/deploy.md +1 -1
  292. package/zh/apis/monorepo/commands/gen-release-note.md +1 -1
  293. package/zh/apis/monorepo/commands/lint.md +1 -1
  294. package/zh/apis/monorepo/commands/new.md +1 -1
  295. package/zh/apis/monorepo/commands/pre.md +1 -1
  296. package/zh/apis/monorepo/commands/release.md +1 -1
  297. package/zh/configure/app/bff/fetcher.md +1 -2
  298. package/zh/configure/app/bff/prefix.md +2 -3
  299. package/zh/configure/app/bff/proxy.md +8 -13
  300. package/zh/configure/app/dev/asset-prefix.md +0 -1
  301. package/zh/configure/app/dev/hmr.md +0 -1
  302. package/zh/configure/app/dev/https.md +0 -1
  303. package/zh/configure/app/dev/port.md +0 -1
  304. package/zh/configure/app/dev/progress-bar.md +0 -1
  305. package/zh/configure/app/dev/proxy.md +2 -3
  306. package/zh/configure/app/dev/start-url.md +0 -1
  307. package/zh/configure/app/dev/with-master-app.md +0 -1
  308. package/zh/configure/app/experiments/lazy-compilation.md +12 -0
  309. package/zh/configure/app/html/app-icon.md +0 -1
  310. package/zh/configure/app/html/crossorigin.md +0 -1
  311. package/zh/configure/app/html/disable-html-folder.md +0 -1
  312. package/zh/configure/app/html/favicon-by-entries.md +0 -1
  313. package/zh/configure/app/html/favicon.md +0 -1
  314. package/zh/configure/app/html/inject-by-entries.md +0 -1
  315. package/zh/configure/app/html/inject.md +0 -1
  316. package/zh/configure/app/html/meta-by-entries.md +0 -1
  317. package/zh/configure/app/html/meta.md +0 -1
  318. package/zh/configure/app/html/mount-id.md +0 -1
  319. package/zh/configure/app/html/template-by-entries.md +0 -1
  320. package/zh/configure/app/html/template-parameters-by-entries.md +0 -1
  321. package/zh/configure/app/html/template-parameters.md +0 -1
  322. package/zh/configure/app/html/template.md +0 -1
  323. package/zh/configure/app/html/title-by-entries.md +0 -1
  324. package/zh/configure/app/html/title.md +0 -1
  325. package/zh/configure/app/output/asset-prefix.md +0 -1
  326. package/zh/configure/app/output/assets-retry.md +0 -1
  327. package/zh/configure/app/output/charset.md +0 -1
  328. package/zh/configure/app/output/clean-dist-path.md +0 -1
  329. package/zh/configure/app/output/convert-to-rem.md +0 -1
  330. package/zh/configure/app/output/copy.md +0 -1
  331. package/zh/configure/app/output/css-module-local-ident-name.md +0 -1
  332. package/zh/configure/app/output/data-uri-limit.md +0 -1
  333. package/zh/configure/app/output/disable-css-module-extension.md +0 -1
  334. package/zh/configure/app/output/disable-filename-hash.md +0 -1
  335. package/zh/configure/app/output/disable-inline-runtime-chunk.md +0 -1
  336. package/zh/configure/app/output/disable-minimize.md +0 -1
  337. package/zh/configure/app/output/disable-node-polyfill.md +2 -4
  338. package/zh/configure/app/output/disable-source-map.md +0 -1
  339. package/zh/configure/app/output/disable-ts-checker.md +12 -0
  340. package/zh/configure/app/output/dist-path.md +0 -1
  341. package/zh/configure/app/output/enable-asset-fallback.md +0 -1
  342. package/zh/configure/app/output/enable-asset-manifest.md +0 -1
  343. package/zh/configure/app/output/enable-css-module-tsdeclaration.md +0 -1
  344. package/zh/configure/app/output/enable-inline-scripts.md +0 -1
  345. package/zh/configure/app/output/enable-inline-styles.md +0 -1
  346. package/zh/configure/app/output/enable-latest-decorators.md +0 -1
  347. package/zh/configure/app/output/enable-modern-mode.md +13 -5
  348. package/zh/configure/app/output/externals.md +0 -1
  349. package/zh/configure/app/output/filename.md +0 -1
  350. package/zh/configure/app/output/legal-comments.md +0 -1
  351. package/zh/configure/app/output/override-browserslist.md +0 -1
  352. package/zh/configure/app/output/polyfill.md +0 -1
  353. package/zh/configure/app/output/svg-default-export.md +0 -1
  354. package/zh/configure/app/performance/build-cache.md +0 -1
  355. package/zh/configure/app/performance/bundle-analyze.md +0 -1
  356. package/zh/configure/app/performance/chunk-split.md +0 -1
  357. package/zh/configure/app/performance/print-file-size.md +0 -1
  358. package/zh/configure/app/performance/profile.md +0 -1
  359. package/zh/configure/app/performance/remove-console.md +0 -1
  360. package/zh/configure/app/performance/remove-moment-locale.md +0 -1
  361. package/zh/configure/app/runtime/intro.md +92 -0
  362. package/zh/configure/app/runtime/master-app.md +8 -21
  363. package/zh/configure/app/runtime/router.md +4 -38
  364. package/zh/configure/app/runtime/state.md +10 -13
  365. package/zh/configure/app/security/sri.md +0 -1
  366. package/zh/configure/app/server/base-url.md +1 -2
  367. package/zh/configure/app/server/port.md +1 -2
  368. package/zh/configure/app/server/public-routes.md +1 -2
  369. package/zh/configure/app/server/routes.md +4 -5
  370. package/zh/configure/app/server/ssr-by-entries.md +2 -3
  371. package/zh/configure/app/server/ssr.md +1 -2
  372. package/zh/configure/app/source/alias.md +0 -1
  373. package/zh/configure/app/source/compile-js-data-uri.md +0 -1
  374. package/zh/configure/app/source/config-dir.md +12 -4
  375. package/zh/configure/app/source/define.md +0 -1
  376. package/zh/configure/app/source/design-system.md +14 -24
  377. package/zh/configure/app/source/disable-default-entries.md +8 -3
  378. package/zh/configure/app/source/enable-async-entry.md +3 -3
  379. package/zh/configure/app/source/entries-dir.md +1 -1
  380. package/zh/configure/app/source/entries.md +16 -9
  381. package/zh/configure/app/source/exclude.md +12 -0
  382. package/zh/configure/app/source/global-vars.md +0 -1
  383. package/zh/configure/app/source/include.md +0 -1
  384. package/zh/configure/app/source/module-scopes.md +0 -1
  385. package/zh/configure/app/source/pre-entry.md +0 -1
  386. package/zh/configure/app/source/resolve-extension-prefix.md +0 -1
  387. package/zh/configure/app/source/resolve-main-fields.md +0 -1
  388. package/zh/configure/app/testing/transformer.md +2 -4
  389. package/zh/configure/app/tools/autoprefixer.md +0 -1
  390. package/zh/configure/app/tools/babel.md +0 -1
  391. package/zh/configure/app/tools/css-extract.md +0 -1
  392. package/zh/configure/app/tools/css-loader.md +0 -1
  393. package/zh/configure/app/tools/dev-server.md +0 -1
  394. package/zh/configure/app/tools/esbuild.md +5 -5
  395. package/zh/configure/app/tools/html-plugin.md +0 -1
  396. package/zh/configure/app/tools/inspector.md +0 -1
  397. package/zh/configure/app/tools/jest.md +2 -4
  398. package/zh/configure/app/tools/less.md +0 -1
  399. package/zh/configure/app/tools/minify-css.md +0 -1
  400. package/zh/configure/app/tools/postcss.md +0 -1
  401. package/zh/configure/app/tools/pug.md +0 -1
  402. package/zh/configure/app/tools/sass.md +0 -1
  403. package/zh/configure/app/tools/style-loader.md +0 -1
  404. package/zh/configure/app/tools/styled-components.md +0 -1
  405. package/zh/configure/app/tools/terser.md +0 -1
  406. package/zh/configure/app/tools/ts-checker.md +0 -1
  407. package/zh/configure/app/tools/ts-loader.md +0 -1
  408. package/zh/configure/app/tools/webpack-chain.md +0 -1
  409. package/zh/configure/app/tools/webpack.md +0 -1
  410. package/zh/configure/app/usage.md +15 -4
  411. package/zh/guides/advanced-features/bff/bff-server.md +1 -1
  412. package/zh/guides/advanced-features/bff/frameworks.md +0 -221
  413. package/zh/guides/advanced-features/code-split.md +1 -1
  414. package/zh/guides/advanced-features/low-level.md +2 -2
  415. package/zh/guides/advanced-features/ssg.md +2 -2
  416. package/zh/guides/advanced-features/ssr.md +4 -4
  417. package/zh/guides/basic-features/alias.md +1 -1
  418. package/zh/guides/basic-features/css/postcss.md +1 -1
  419. package/zh/guides/basic-features/css/tailwindcss.md +2 -2
  420. package/zh/guides/basic-features/env-vars.md +2 -3
  421. package/zh/guides/basic-features/proxy.md +2 -2
  422. package/zh/guides/topic-detail/compile-speed.md +5 -5
  423. package/zh/guides/topic-detail/generator/_category_.json +4 -0
  424. package/zh/guides/topic-detail/generator/codesmith/_category_.json +4 -0
  425. package/zh/guides/topic-detail/generator/codesmith/introduce.md +5 -0
  426. package/zh/guides/topic-detail/generator/config/_category_.json +4 -0
  427. package/zh/{configure/generator/introduce.md → guides/topic-detail/generator/config/common.md} +35 -42
  428. package/zh/{configure/generator → guides/topic-detail/generator/config}/module.md +7 -11
  429. package/zh/{configure/generator → guides/topic-detail/generator/config}/monorepo.md +4 -4
  430. package/zh/{configure/generator → guides/topic-detail/generator/config}/mwa.md +11 -45
  431. package/zh/guides/topic-detail/generator/plugin/_category_.json +4 -0
  432. package/zh/guides/topic-detail/{generator-plugin → generator/plugin}/abstract.md +0 -0
  433. package/zh/guides/topic-detail/generator/plugin/api/_category_.json +4 -0
  434. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/_category_.json +0 -0
  435. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/addFile.md +1 -1
  436. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/addHelper.md +0 -0
  437. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/addManyFile.md +1 -1
  438. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/addPartial.md +0 -0
  439. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/introduce.md +0 -0
  440. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/rmDir.md +0 -0
  441. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/rmFile.md +0 -0
  442. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/updateJSONFile.md +0 -0
  443. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/updateModernConfig.md +0 -0
  444. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/file/updateTextRawFile.md +0 -0
  445. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/git/_category_.json +0 -0
  446. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/git/gitAddAndCommit.md +0 -0
  447. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/git/initGitRepo.md +0 -0
  448. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/git/isInGitRepo.md +0 -0
  449. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/hook/_category_.json +0 -0
  450. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/hook/afterForged.md +1 -1
  451. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/hook/onForged.md +1 -1
  452. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/info/_category_.json +0 -0
  453. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/info/isFileExit.md +0 -0
  454. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/info/locale.md +0 -0
  455. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/info/readDir.md +0 -0
  456. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/input/_category_.json +0 -0
  457. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/input/addInputAfter.md +14 -6
  458. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/input/addInputBefore.md +14 -6
  459. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/input/setInput.md +2 -2
  460. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/input/setInputValue.md +0 -0
  461. package/zh/guides/topic-detail/generator/plugin/api/input/type.md +65 -0
  462. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/introduce.md +0 -0
  463. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/new/_category_.json +0 -0
  464. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/new/createElement.md +1 -1
  465. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/new/createSubProject.md +1 -1
  466. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/new/enableFunc.md +1 -3
  467. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/new/introduce.md +3 -3
  468. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/npm/_category_.json +0 -0
  469. package/zh/{apis/generator/plugin → guides/topic-detail/generator/plugin/api}/npm/install.md +0 -0
  470. package/zh/guides/topic-detail/{generator-plugin → generator/plugin}/develop.md +4 -4
  471. package/zh/guides/topic-detail/{generator-plugin → generator/plugin}/use.md +0 -0
  472. package/zh/guides/topic-detail/generator/project.md +117 -0
  473. package/zh/guides/topic-detail/micro-frontend/debugging.md +5 -5
  474. package/zh/guides/topic-detail/micro-frontend/route-mode.md +2 -2
  475. package/zh/guides/troubleshooting/compile.md +3 -3
  476. package/zh/tutorials/first-app/c01-getting-started/1.4-enable-ssr.md +2 -2
  477. package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.3-compatibility.md +4 -4
  478. package/zh/tutorials/first-app/c06-css-and-component/6.4-design-system.md +3 -3
  479. package/zh/tutorials/first-app/c07-app-entry/7.3-manage-entries-by-hand.md +2 -2
  480. package/zh/tutorials/first-app/c08-client-side-routing/8.1-code-based-routing.md +1 -1
  481. package/scripts/gen-config.ts +0 -60
  482. package/zh/apis/app/hooks/api/framework/app.md +0 -100
  483. package/zh/apis/app/hooks/server/index.md +0 -14
  484. package/zh/apis/app/hooks/src/error.md +0 -10
  485. package/zh/apis/app/hooks/src/eslint.md +0 -9
  486. package/zh/apis/app/runtime/app/bootstrap.md +0 -83
  487. package/zh/apis/app/runtime/app/create-app.md +0 -47
  488. package/zh/apis/app/runtime/app/no-ssr.md +0 -41
  489. package/zh/apis/app/runtime/app/pre-render.md +0 -77
  490. package/zh/apis/app/runtime/app/use-module-app.md +0 -60
  491. package/zh/apis/app/runtime/app/use-module-apps.md +0 -64
  492. package/zh/apis/app/runtime/app/use-runtime-context.md +0 -39
  493. package/zh/apis/app/runtime/bff-server/_category_.json +0 -4
  494. package/zh/apis/app/runtime/bff-server/after-lambda-registed.md +0 -35
  495. package/zh/apis/app/runtime/bff-server/hook.md +0 -120
  496. package/zh/apis/app/runtime/bff-server/use-context.md +0 -70
  497. package/zh/apis/app/runtime/container/_category_.json +0 -4
  498. package/zh/apis/app/runtime/container/use-loader.md +0 -64
  499. package/zh/apis/app/runtime/utility/loadable/_category_.json +0 -4
  500. package/zh/apis/app/runtime/utility/loadable/lazy.md +0 -29
  501. package/zh/apis/app/runtime/utility/loadable/loadable-component.md +0 -61
  502. package/zh/apis/app/runtime/utility/loadable/loadable-library.md +0 -67
  503. package/zh/apis/generator/plugin/_category_.json +0 -4
  504. package/zh/apis/generator/plugin/input/addOptionAfter.md +0 -45
  505. package/zh/apis/generator/plugin/input/addOptionBefore.md +0 -45
  506. package/zh/apis/generator/plugin/input/type.md +0 -101
  507. package/zh/guides/topic-detail/generator-plugin/_category_.json +0 -4
@@ -0,0 +1,896 @@
1
+ ---
2
+ sidebar_position: 5
3
+ ---
4
+
5
+ # Hook API
6
+
7
+ 在 Modern.js 中主要构建了三套 Manager 模型: CLI、Runtime、Server,其中 CLI 是三套工程方案都有的,而 Runtime、Server 则是应用工程独有的,不同的工程方案中 Manager 模型的功能是不同的。
8
+
9
+ ## 基础
10
+
11
+ 这一部分的 Hook 模型是所有工程方案都有的,就是说在任意的工程方案中都可以在插件中添加实现对应的中间件函数。
12
+
13
+ 接下来对支持的所有基础 Hook 分别进行介绍。
14
+
15
+ #### `config`
16
+
17
+ - 功能: 收集配置
18
+ - 执行阶段: 解析完 `modern.config.ts` 中的配置之后
19
+ - Hook 模型: ParallelWorkflow
20
+ - 类型: `ParallelWorkflow<void, unknown>`
21
+ - 使用示例:
22
+
23
+ ```ts
24
+ import type { CliPlugin } from '@modern-js/core';
25
+
26
+ export default (): CliPlugin => ({
27
+ setup(api) {
28
+ return {
29
+ config: () => {
30
+ return {
31
+ /** some config */
32
+ };
33
+ },
34
+ };
35
+ },
36
+ });
37
+ ```
38
+
39
+ 这里返回的配置信息,会被收集和统一处理合并。
40
+
41
+ #### `validateSchema`
42
+
43
+ - 功能: 收集各个插件中配置的用来校验用户配置的 [JSON Schema](https://json-schema.org/)
44
+ - 执行阶段: `config` Hook 运行完之后。
45
+ - Hook 模型: ParallelWorkflow
46
+ - 类型: `ParallelWorkflow<void, unknown>`
47
+ - 使用示例:
48
+
49
+ ```ts
50
+ import type { CliPlugin } from '@modern-js/core';
51
+
52
+ export default (): CliPlugin => ({
53
+ setup(api) {
54
+ return {
55
+ validateSchema: () => {
56
+ return {
57
+ // target is field
58
+ target: 'foo',
59
+ schema: {
60
+ type: 'string',
61
+ },
62
+ };
63
+ },
64
+ };
65
+ },
66
+ });
67
+ ```
68
+
69
+ 这里返回的 JSON Schema 会用来校验 `modern.config.js` 中的配置信息。
70
+
71
+ 比如这里返回:
72
+
73
+ ```json
74
+ {
75
+ "target": "foo",
76
+ "schema": {
77
+ "type": "string"
78
+ }
79
+ }
80
+ ```
81
+
82
+ 就可以在 `modern.config.ts` 中这样配置:
83
+
84
+ ```ts title="modern.config.ts"
85
+ export default defineConfig({
86
+ foo: 'test',
87
+ });
88
+ ```
89
+
90
+ 如果是别的类型,校验就不通过会报错,比如这样:
91
+
92
+ ```ts title="modern.config.ts"
93
+ export default defineConfig({
94
+ foo: {},
95
+ });
96
+ ```
97
+
98
+ 就会报错:
99
+
100
+ ```sh
101
+ $ modern dev
102
+ 1 | {
103
+ > 2 | "foo": {},
104
+ | ^^^^^ Property foo is not expected to be here
105
+ ```
106
+
107
+ #### `prepare`
108
+
109
+ - 功能: 运行主流程的前置准备流程
110
+ - 执行阶段: 校验完配置之后
111
+ - Hook 模型: AsyncWorkflow
112
+ - 类型: `AsyncWorkflow<void, void>`
113
+ - 使用示例:
114
+
115
+ ```ts
116
+ import type { CliPlugin } from '@modern-js/core';
117
+
118
+ export default (): CliPlugin => ({
119
+ setup(api) {
120
+ return {
121
+ prepare: () => {
122
+ // do something
123
+ },
124
+ };
125
+ },
126
+ });
127
+ ```
128
+
129
+ #### `commands`
130
+
131
+ - 功能: 为 command 添加新的命令
132
+ - 执行阶段: `prepare` Hook 运行完之后
133
+ - Hook 模型: AsyncWorkflow
134
+ - 类型: `AsyncWorkflow<{ program: Command; }, void>`
135
+ - 使用示例:
136
+
137
+ ```ts
138
+ import type { CliPlugin } from '@modern-js/core';
139
+
140
+ export default (): CliPlugin => ({
141
+ setup(api) {
142
+ return {
143
+ commands: ({ program }) => {
144
+ program.command('foo').action(async () => {
145
+ // do something
146
+ console.log('foo');
147
+ });
148
+ },
149
+ };
150
+ },
151
+ });
152
+ ```
153
+
154
+ 将上面这个插件添加到 `modern.config.ts` 中:
155
+
156
+ ```ts title="modern.config.ts"
157
+ import MyPlugin from './config/plugin/MyPlugin';
158
+
159
+ export default defineConfig({
160
+ plugins: [MyPlugin()],
161
+ });
162
+ ```
163
+
164
+ 运行 `modern foo` 就可以看到控制台输出:
165
+
166
+ ```sh
167
+ $ modern foo
168
+ foo
169
+ ```
170
+
171
+ #### `beforeExit`
172
+
173
+ - 功能: 在退出进程前,重置一些文件状态
174
+ - 执行阶段: 进程退出之前
175
+ - Hook 模型: AsyncWorkflow
176
+ - 类型: `AsyncWorkflow<void, void>`
177
+ - 使用示例:
178
+
179
+ ```ts
180
+ import type { CliPlugin } from '@modern-js/core';
181
+
182
+ export default (): CliPlugin => ({
183
+ setup(api) {
184
+ return {
185
+ beforeExit: () => {
186
+ // do something
187
+ },
188
+ };
189
+ },
190
+ });
191
+ ```
192
+
193
+ ## 应用工程方案
194
+
195
+ 应用工程支持添加到项目中的插件主要有三种: CLI 插件、 Server 插件、Runtime 插件。他们是基于同一套插件系统实现的,但它们所支持的 Hook 不同、功能不同、运行的时机也不同。
196
+
197
+ 不同的 Manager 对应 Hook 模型和运行时机是不同的,所以接下来会对 CLI、Server、Runtime 的 Hook 模型分开讨论。
198
+
199
+ ### CLI
200
+
201
+ 应用工程中除了上面提到的基础的 CLI Hook 之外还有一些 MWA 场景下特定的 Hook。
202
+
203
+ #### `beforeDev`
204
+
205
+ - 功能: 运行 dev 主流程的之前的任务
206
+ - 执行阶段: `dev` 命令运行时,项目开始启动前执行
207
+ - Hook 模型: AsyncWorkflow
208
+ - 类型: `AsyncWorkflow<void, unknown>`
209
+ - 使用示例:
210
+
211
+ ```ts
212
+ import type { CliPlugin } from '@modern-js/core';
213
+
214
+ export default (): CliPlugin => ({
215
+ setup(api) {
216
+ return {
217
+ beforeDev: () => {
218
+ // do something
219
+ },
220
+ };
221
+ },
222
+ });
223
+ ```
224
+
225
+ #### `afterDev`
226
+
227
+ - 功能: 运行 dev 主流程的之后的任务
228
+ - 执行阶段: `dev` 命令运行时,项目启动完成之后执行
229
+ - Hook 模型: AsyncWorkflow
230
+ - 类型: `AsyncWorkflow<void, unknown>`
231
+ - 使用示例:
232
+
233
+ ```ts
234
+ import type { CliPlugin } from '@modern-js/core';
235
+
236
+ export default (): CliPlugin => ({
237
+ setup(api) {
238
+ return {
239
+ afterDev: () => {
240
+ // do something
241
+ },
242
+ };
243
+ },
244
+ });
245
+ ```
246
+
247
+ #### `beforeCreateCompiler`
248
+
249
+ - 功能: 在中间件函数中可以拿到创建 Webpack Compiler 的 Webpack 配置
250
+ - 执行阶段: 创建 Webpack Compiler 之前执行
251
+ - Hook 模型: AsyncWorkflow
252
+ - 类型: `AsyncWorkflow<{ webpackConfigs: Configuration[];}, unknown>`
253
+ - 使用示例:
254
+
255
+ ```ts
256
+ import type { CliPlugin } from '@modern-js/core';
257
+
258
+ export default (): CliPlugin => ({
259
+ setup(api) {
260
+ return {
261
+ beforeCreateCompiler: ({ webpackConfigs }) => {
262
+ // do something
263
+ },
264
+ };
265
+ },
266
+ });
267
+ ```
268
+
269
+ #### `afterCreateCompiler`
270
+
271
+ - 功能: 在中间件函数中可以拿到创建的 Webpack Compiler
272
+ - 执行阶段: 创建 Webpack Compiler 之后执行
273
+ - Hook 模型: AsyncWorkflow
274
+ - 类型: `AsyncWorkflow<{ compiler: Compiler | MultiCompiler | undefined; }, unknown>`
275
+ - 使用示例:
276
+
277
+ ```ts
278
+ import type { CliPlugin } from '@modern-js/core';
279
+
280
+ export default (): CliPlugin => ({
281
+ setup(api) {
282
+ return {
283
+ afterCreateCompiler: ({ compiler }) => {
284
+ // do something
285
+ },
286
+ };
287
+ },
288
+ });
289
+ ```
290
+
291
+ #### `beforePrintInstructions`
292
+
293
+ - 功能: 在中间件函数中可以拿到即将打印的日志信息,并对其进行修改
294
+ - 执行阶段: 打印日志信息之前执行
295
+ - Hook 模型: AsyncWaterfall
296
+ - 类型: `AsyncWaterfall<{ instructions: string }>`
297
+ - 使用示例:
298
+
299
+ ```ts
300
+ import type { CliPlugin } from '@modern-js/core';
301
+
302
+ export default (): CliPlugin => ({
303
+ setup(api) {
304
+ return {
305
+ beforePrintInstructions: ({ instructions }) => {
306
+ // do something
307
+ return {
308
+ instructions: [...instructions, 'some new message'],
309
+ };
310
+ },
311
+ };
312
+ },
313
+ });
314
+ ```
315
+
316
+ #### `beforeBuild`
317
+
318
+ - 功能: 运行 build 主流程的之前的任务,可以拿到构建的 Webpack 配置
319
+ - 执行阶段: `build` 命令运行时,项目构建启动前执行
320
+ - Hook 模型: AsyncWorkflow
321
+ - 类型: `AsyncWorkflow<{ webpackConfigs: Configuration[]; }>`
322
+ - 使用示例:
323
+
324
+ ```ts
325
+ import type { CliPlugin } from '@modern-js/core';
326
+
327
+ export default (): CliPlugin => ({
328
+ setup(api) {
329
+ return {
330
+ beforeBuild: () => {
331
+ // do something
332
+ },
333
+ };
334
+ },
335
+ });
336
+ ```
337
+
338
+ #### `afterBuild`
339
+
340
+ - 功能: 运行 build 主流程的之后的任务
341
+ - 执行阶段: `build` 命令运行时,项目构建完成之后执行
342
+ - Hook 模型: AsyncWorkflow
343
+ - 类型: `AsyncWorkflow<void, unknown>`
344
+ - 使用示例:
345
+
346
+ ```ts
347
+ import type { CliPlugin } from '@modern-js/core';
348
+
349
+ export default (): CliPlugin => ({
350
+ setup(api) {
351
+ return {
352
+ afterBuild: () => {
353
+ // do something
354
+ },
355
+ };
356
+ },
357
+ });
358
+ ```
359
+
360
+ #### `modifyEntryImports`
361
+
362
+ - 功能: 用于修改、添加生成入口文件中的 `import` 语句
363
+ - 执行阶段: 生成入口文件之前,[`prepare`](#prepare) 阶段触发
364
+ - Hook 模型: AsyncWaterfall
365
+ - 类型: `AsyncWaterfall<{ imports: ImportStatement[]; entrypoint: Entrypoint; }>`
366
+ - 使用示例:
367
+
368
+ ```ts
369
+ import type { CliPlugin } from '@modern-js/core';
370
+
371
+ export default (): CliPlugin => ({
372
+ setup(api) {
373
+ return {
374
+ modifyEntryImports({ entrypoint, imports }) {
375
+ // 添加 `import React from 'React'`
376
+ imports.push({
377
+ value: 'react',
378
+ specifiers: [
379
+ {
380
+ imported: 'unmountComponentAtNode',
381
+ },
382
+ ],
383
+ });
384
+
385
+ return { entrypoint, imports };
386
+ },
387
+ };
388
+ },
389
+ });
390
+ ```
391
+
392
+ #### `modifyEntryExport`
393
+
394
+ - 功能: 用于修改生成入口文件中的 `export` 语句
395
+ - 执行阶段: 生成入口文件之前,[`prepare`](#prepare) 阶段触发
396
+ - Hook 模型: AsyncWaterfall
397
+ - 类型: `AsyncWaterfall<{ entrypoint: Entrypoint; exportStatement: string; }>`
398
+ - 使用示例:
399
+
400
+ ```ts
401
+ import type { CliPlugin } from '@modern-js/core';
402
+
403
+ export default (): CliPlugin => ({
404
+ setup(api) {
405
+ return {
406
+ modifyEntryImports({ entrypoint, exportStatement }) {
407
+ return {
408
+ entrypoint,
409
+ exportStatement: [`export const foo = 'test'`, exportStatement].join(
410
+ '\n',
411
+ ),
412
+ };
413
+ },
414
+ };
415
+ },
416
+ });
417
+ ```
418
+
419
+ #### `modifyEntryRuntimePlugins`
420
+
421
+ - 功能: 用于添加、修改生成入口文件中的 [Runtime 插件](#Runtime)
422
+ - 执行阶段: 生成入口文件之前,[`prepare`](#prepare) 阶段触发
423
+ - Hook 模型: AsyncWaterfall
424
+ - 类型: `AsyncWaterfall<{ entrypoint: Entrypoint; plugins: RuntimePlugin[]; }>`
425
+ - 使用示例:
426
+
427
+ ```ts
428
+ import type { CliPlugin } from '@modern-js/core';
429
+
430
+ export default (): CliPlugin => ({
431
+ setup(api) {
432
+ return {
433
+ modifyEntryRuntimePlugins({ entrypoint, plugins }) {
434
+ const name = 'customPlugin';
435
+ const options = {
436
+ /** 可序列化的内容 */
437
+ };
438
+
439
+ return {
440
+ plugins: [
441
+ ...plugins,
442
+ {
443
+ name,
444
+ options: JSON.stringify(options),
445
+ },
446
+ ],
447
+ };
448
+ },
449
+ };
450
+ },
451
+ });
452
+ ```
453
+
454
+ #### `modifyEntryRenderFunction`
455
+
456
+ - 功能: 用于修改生成入口文件中 `render` 函数
457
+ - 执行阶段: 生成入口文件之前,[`prepare`](#prepare) 阶段触发
458
+ - Hook 模型: AsyncWaterfall
459
+ - 类型: `AsyncWaterfall<{ entrypoint: Entrypoint; code: string; }>`
460
+ - 使用示例:
461
+
462
+ ```ts
463
+ import type { CliPlugin } from '@modern-js/core';
464
+
465
+ export default (): CliPlugin => ({
466
+ setup(api) {
467
+ return {
468
+ modifyEntryRenderFunction({ entrypoint, code }) {
469
+ const customRender = `/** render function body */`;
470
+ return {
471
+ entrypoint,
472
+ code: customRender,
473
+ };
474
+ },
475
+ };
476
+ },
477
+ });
478
+ ```
479
+
480
+ #### `modifyFileSystemRoutes`
481
+
482
+ - 功能: 用于修改生成前端页面路由文件中的内容,内容都是需要可序列化的
483
+ - 执行阶段: 生成前端路由文件之前,[`prepare`](#prepare) 阶段触发
484
+ - Hook 模型: AsyncWaterfall
485
+ - 类型: `AsyncWaterfall<{ entrypoint: Entrypoint; routes: Route[]; }>`
486
+ - 使用示例:
487
+
488
+ ```tsx
489
+ import type { CliPlugin } from '@modern-js/core';
490
+
491
+ export default (): CliPlugin => ({
492
+ setup(api) {
493
+ return {
494
+ modifyFileSystemRoutes({ entrypoint, routes }) {
495
+ return {
496
+ entrypoint,
497
+ routes: [
498
+ ...routes,
499
+ {
500
+ path: '/custom_page',
501
+ component: require.resolve('./Component'),
502
+ exact: true,
503
+ },
504
+ ],
505
+ };
506
+ },
507
+ };
508
+ },
509
+ });
510
+ ```
511
+
512
+ 这样就为前端新增了一个页面路由。
513
+
514
+ #### `modifyServerRoutes`
515
+
516
+ - 功能: 用于修改生成服务器路由中的内容
517
+ - 执行阶段: 生成 Server 路由文件之前,[`prepare`](#prepare) 阶段触发
518
+ - Hook 模型: AsyncWaterfall
519
+ - 类型: `AsyncWaterfall<{ routes: ServerRoute[]; }>`
520
+ - 使用示例:
521
+
522
+ ```ts
523
+ import type { CliPlugin } from '@modern-js/core';
524
+
525
+ export default (): CliPlugin => ({
526
+ setup(api) {
527
+ return {
528
+ modifyServerRoutes({ routes }) {
529
+ return {
530
+ routes: [
531
+ ...routes,
532
+ {
533
+ urlPath: '/api/foo',
534
+ isApi: true,
535
+ entryPath: '',
536
+ isSPA: false,
537
+ isSSR: false,
538
+ },
539
+ ],
540
+ };
541
+ },
542
+ };
543
+ },
544
+ });
545
+ ```
546
+
547
+ #### `modifyAsyncEntry`
548
+
549
+ - 功能: 用于修改包裹入口文件的异步模块,参见 [source.enableAsyncEntry](/docs/configure/app/source/enable-async-entry)
550
+ - 执行阶段: 生成入口文件之前,[`prepare`](#prepare) 阶段触发
551
+ - Hook 模型: AsyncWaterfall
552
+ - 类型: `AsyncWaterfall<{ entrypoint: Entrypoint; code: string; }>`
553
+ - 使用示例:
554
+
555
+ ```ts
556
+ import type { CliPlugin } from '@modern-js/core';
557
+
558
+ export default (): CliPlugin => ({
559
+ setup(api) {
560
+ return {
561
+ modifyAsyncEntry({ entrypoint, code }) {
562
+ const customCode = `console.log('hello');`;
563
+ return {
564
+ entrypoint,
565
+ code: `${customCode}${code}`,
566
+ };
567
+ },
568
+ };
569
+ },
570
+ });
571
+ ```
572
+
573
+ #### `htmlPartials`
574
+
575
+ - 功能: 用于定制生成的 HTML 页面模版
576
+ - 执行阶段: [`prepare`](#prepare) 阶段触发
577
+ - Hook 模型: AsyncWaterfall
578
+ - 类型: `AsyncWaterfall<{ entrypoint: Entrypoint; partials: HtmlPartials; }>`
579
+ - 使用示例:
580
+
581
+ ```ts
582
+ import type { CliPlugin } from '@modern-js/core';
583
+
584
+ export default (): CliPlugin => ({
585
+ setup(api) {
586
+ return {
587
+ async htmlPartials({ entrypoint, partials }) {
588
+ partials.head.push('<script>console.log("test")</script>');
589
+ return {
590
+ entrypoint,
591
+ partials,
592
+ };
593
+ },
594
+ };
595
+ },
596
+ });
597
+ ```
598
+
599
+ 这样就为 HTML 模版中新增了一个 Script 标签。
600
+
601
+ ### Server
602
+
603
+ 应用工程中的 Server 部分也支持了插件。其中的 Hook 将会提供一些特定阶段调用和特殊功能的 Hook。
604
+
605
+ #### `create`
606
+
607
+ - 功能: 在中间件函数中会拿到 Server 初始化用到的指标测量工具配置 `measureOptions` 和日志工具配置 `loggerOptions`,并返回自定义的指标测量工具 `measure` 和日志工具配置 `logger`
608
+ - 执行阶段: Server 初始化
609
+ - Hook 模型: AsyncPipeline
610
+ - 类型: `AsyncPipeline<ServerInitInput, InitExtension>`
611
+ - 使用示例:
612
+
613
+ ```ts
614
+ import type { ServerPlugin } from '@modern-js/server-core';
615
+
616
+ export default (): ServerPlugin => ({
617
+ setup(api) {
618
+ return {
619
+ create: ({ measureOptions, loggerOptions }) => {
620
+ // do something
621
+ },
622
+ };
623
+ },
624
+ });
625
+ ```
626
+
627
+ #### `prepareWebServer`
628
+
629
+ - 功能: 设置 Web 路由的处理函数,在中间件函数中可以拿到 Web Server 的前置中间件
630
+ - 执行阶段: 在请求到达的时候
631
+ - Hook 模型: AsyncPipeline
632
+ - 类型: `AsyncPipeline<WebServerStartInput, Adapter>`
633
+ - 使用示例:
634
+
635
+ ```ts
636
+ import type { ServerPlugin } from '@modern-js/server-core';
637
+
638
+ export default (): ServerPlugin => ({
639
+ setup(api) {
640
+ return {
641
+ prepareWebServer: ({ middleware }) => {
642
+ // do something
643
+
644
+ return (req, res) => {
645
+ // do response
646
+ };
647
+ },
648
+ };
649
+ },
650
+ });
651
+ ```
652
+
653
+ #### `prepareApiServer`
654
+
655
+ - 功能: 设置 API 路由的处理函数,在中间件函数中可以拿到 API Server 的前置中间件
656
+ - 执行阶段: 请求到达并且 match bff basename 之后执行
657
+ - Hook 模型: AsyncPipeline
658
+ - 类型: `AsyncPipeline<APIServerStartInput, Adapter>`
659
+ - 使用示例:
660
+
661
+ ```ts
662
+ import type { ServerPlugin } from '@modern-js/server-core';
663
+
664
+ export default (): ServerPlugin => ({
665
+ setup(api) {
666
+ return {
667
+ prepareApiServer: ({ middleware }) => {
668
+ // do something
669
+
670
+ return (req, res) => {
671
+ // do response
672
+ };
673
+ },
674
+ };
675
+ },
676
+ });
677
+ ```
678
+
679
+ ### Runtime
680
+
681
+ Runtime 插件主要用于开发者修改需要渲染的组件与 Element 和定制服务器端、客户端的渲染过程。
682
+
683
+ #### `init`
684
+
685
+ - 功能: 执行 `App.init`
686
+ - 执行阶段: 渲染(SSR/CSR)
687
+ - Hook 模型: AsyncPipeline
688
+ - 类型: `AsyncPipeline<{ context: RuntimeContext; }, unknown>`
689
+ - 使用示例:
690
+
691
+ ```ts
692
+ import type { Plugin } from '@modern-js/runtime';
693
+
694
+ export default (): Plugin => ({
695
+ setup(api) {
696
+ return {
697
+ init({ context }, next) {
698
+ // do something
699
+ return next({ context });
700
+ },
701
+ };
702
+ },
703
+ });
704
+ ```
705
+
706
+ #### `hoc`
707
+
708
+ - 功能: 修改需要渲染的组件
709
+ - 执行阶段: 渲染(SSR/CSR)
710
+ - Hook 模型: Pipeline
711
+ - 类型: `Pipeline<{ App: React.ComponentType<any>; }, React.ComponentType<any>>`
712
+ - 使用示例:
713
+
714
+ ```ts
715
+ import { createContext } from 'react';
716
+ import type { Plugin } from '@modern-js/runtime';
717
+
718
+ export default (): Plugin => ({
719
+ setup(api) {
720
+ const FooContext = createContext('');
721
+ return {
722
+ hoc({ App }, next) {
723
+ return next({
724
+ App: (props: any) => {
725
+ return (
726
+ <FooContext.Provider store={'test'}>
727
+ <App {...props} />
728
+ </FooContext.Provider>
729
+ );
730
+ },
731
+ });
732
+ },
733
+ };
734
+ },
735
+ });
736
+ ```
737
+
738
+ #### `provide`
739
+
740
+ - 功能: 修改需要渲染的 Element
741
+ - 执行阶段: 渲染(SSR/CSR)
742
+ - Hook 模型: Pipeline
743
+ - 类型: `Pipeline<{ element: JSX.Element; props: AppProps; context: RuntimeContext }, JSX.Element>`
744
+ - 使用示例:
745
+
746
+ ```ts
747
+ import { createContext } from 'react';
748
+ import type { Plugin } from '@modern-js/runtime';
749
+
750
+ export default (): Plugin => ({
751
+ setup(api) {
752
+ const FooContext = createContext('');
753
+
754
+ return {
755
+ provide: ({ element }) => <div>{element}</div>,
756
+ };
757
+ },
758
+ });
759
+ ```
760
+
761
+ #### `client`
762
+
763
+ - 功能: 定制客户端渲染流程
764
+ - 执行阶段: 在浏览器客户端渲染
765
+ - Hook 模型: AsyncPipeline
766
+ - 类型: `AsyncPipeline<{ App: React.ComponentType<any>; context?: RuntimeContext; rootElement: HTMLElement; }, void>`
767
+ - 使用示例:
768
+
769
+ ```ts
770
+ import ReactDOM from 'react-dom';
771
+ import type { Plugin } from '@modern-js/runtime';
772
+
773
+ export default (): Plugin => ({
774
+ setup(api) {
775
+ return {
776
+ client: async ({ App, rootElement }) => {
777
+ ReactDOM.render(
778
+ React.createElement(App, { context: { foo: 'test' } }),
779
+ rootElement,
780
+ );
781
+ },
782
+ };
783
+ },
784
+ });
785
+ ```
786
+
787
+ #### `server`
788
+
789
+ - 功能: 定制服务器端渲染流程
790
+ - 执行阶段: SSR
791
+ - Hook 模型: AsyncPipeline
792
+ - 类型: `AsyncPipeline<{ App: React.ComponentType<any>; context?: RuntimeContext; }, string>`
793
+ - 使用示例:
794
+
795
+ ```ts
796
+ import ReactDomServer from 'react-dom/server';
797
+ import type { Plugin } from '@modern-js/runtime';
798
+
799
+ export default (): Plugin => ({
800
+ setup(api) {
801
+ return {
802
+ server({ App, context }) {
803
+ return ReactDomServer.renderToString(
804
+ React.createElement(App, { context: { foo: 'test' } }),
805
+ );
806
+ },
807
+ };
808
+ },
809
+ });
810
+ ```
811
+
812
+ ## 模块工程方案
813
+
814
+ 模块工程方案用于开发可复用模块,主要提供编译构建的能力,插件方面则是主要提供了调整编译构建配置的 Hook。
815
+
816
+ #### `moduleLessConfig`
817
+
818
+ - 功能: 用于设置 [Less](https://lesscss.org/) 文件的编译配置
819
+ - 执行阶段: `build` 阶段
820
+ - Hook 模型: AsyncPipeline
821
+ - 类型: `AsyncPipeline<{ modernConfig: NormalizedConfig }, LessOption | undefined>`
822
+ - 使用示例:
823
+
824
+ ```ts
825
+ import type { CliPlugin } from '@modern-js/core';
826
+
827
+ export default (): CliPlugin => ({
828
+ setup(api) {
829
+ return {
830
+ moduleLessConfig: ({ modernConfig }) => {
831
+ // do something
832
+
833
+ return {
834
+ // LESS 配置
835
+ };
836
+ },
837
+ };
838
+ },
839
+ });
840
+ ```
841
+
842
+ #### `moduleSassConfig`
843
+
844
+ - 功能: 用于设置 [Sass](https://sass-lang.com/) 文件的编译配置
845
+ - 执行阶段: `build` 阶段
846
+ - Hook 模型: AsyncPipeline
847
+ - 类型: `AsyncPipeline<{ modernConfig: NormalizedConfig }, SassOptions | undefined>`
848
+ - 使用示例:
849
+
850
+ ```ts
851
+ import type { CliPlugin } from '@modern-js/core';
852
+
853
+ export default (): CliPlugin => ({
854
+ setup(api) {
855
+ return {
856
+ moduleSassConfig: ({ modernConfig }) => {
857
+ // do something
858
+
859
+ return {
860
+ // SASS 配置
861
+ };
862
+ },
863
+ };
864
+ },
865
+ });
866
+ ```
867
+
868
+ #### `moduleTailwindConfig`
869
+
870
+ - 功能: 用于设置 [Tailwind CSS](https://tailwindcss.com/) 的相关配置
871
+ - 执行阶段: `build` 阶段
872
+ - Hook 模型: AsyncPipeline
873
+ - 类型: `AsyncPipeline<{ modernConfig: NormalizedConfig }, any>`
874
+ - 使用示例:
875
+
876
+ ```ts
877
+ import type { CliPlugin } from '@modern-js/core';
878
+
879
+ export default (): CliPlugin => ({
880
+ setup(api) {
881
+ return {
882
+ moduleTailwindConfig: ({ modernConfig }) => {
883
+ // do something
884
+
885
+ return {
886
+ // Tailwind CSS 配置
887
+ };
888
+ },
889
+ };
890
+ },
891
+ });
892
+ ```
893
+
894
+ ## Monorepo 工程方案
895
+
896
+ Monorepo 工程方案中目前没有设置额外的插件 Hook,可以创建、添加拥有基础 Hook 的插件: [基础](#基础)。