@modern-js/main-doc 2.0.0-beta.2 → 2.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/new.md +0 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/bootstrap.md +17 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-app.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-store.md +0 -22
- package/en/docusaurus-plugin-content-docs/current/components/reduck-migration.md +1 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/asset-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/hmr.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/https.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/port.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/progress-bar.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/start-url.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/experiments/lazy-compilation.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/app-icon.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/crossorigin.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/disable-html-folder.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/favicon-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/favicon.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/inject-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/inject.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/meta-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/meta.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/mount-id.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-parameters-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-parameters.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/title-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/title.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/asset-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/assets-retry.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/charset.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/clean-dist-path.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/convert-to-rem.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/copy.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/css-module-local-ident-name.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/data-uri-limit.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-extract.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-module-extension.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-filename-hash.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-inline-runtime-chunk.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-minimize.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-source-map.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-ts-checker.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/dist-path.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-asset-fallback.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-asset-manifest.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-css-module-tsdeclaration.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-inline-scripts.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-inline-styles.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-latest-decorators.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/externals.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/filename.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/legal-comments.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/override-browserslist.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/polyfill.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/svg-default-export.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/build-cache.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/bundle-analyze.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/chunk-split.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/print-file-size.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/profile.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/remove-console.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/remove-moment-locale.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/plugins.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/security/sri.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/alias.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/compile-js-data-uri.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/define.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/exclude.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/global-vars.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/include.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/module-scopes.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/pre-entry.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/resolve-extension-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/resolve-main-fields.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/autoprefixer.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/babel.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/css-extract.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/css-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/dev-server.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/html-plugin.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/inspector.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/less.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/minify-css.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/postcss.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/pug.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/sass.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/style-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/styled-components.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/swc.md +42 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/terser.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/ts-checker.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/ts-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/webpack-chain.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/webpack.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/builder.md +46 -0
- package/en/docusaurus-plugin-content-docs/current.json +18 -18
- package/package.json +3 -3
- package/scripts/config.ts +2 -2
- package/zh/apis/app/commands/new.md +0 -2
- package/zh/apis/app/runtime/app/_category_.json +1 -1
- package/zh/apis/app/runtime/bff/_category_.json +1 -1
- package/zh/apis/app/runtime/core/_category_.json +1 -1
- package/zh/apis/app/runtime/core/bootstrap.md +17 -3
- package/zh/apis/app/runtime/model/_category_.json +1 -1
- package/zh/apis/app/runtime/model/create-app.md +1 -1
- package/zh/apis/app/runtime/model/use-store.md +1 -23
- package/zh/apis/app/runtime/router/_category_.json +1 -1
- package/zh/apis/app/runtime/ssr/_category_.json +1 -1
- package/zh/apis/app/runtime/testing/_category_.json +1 -1
- package/zh/apis/app/runtime/utility/_category_.json +1 -1
- package/zh/apis/app/runtime/web-server/_category_.json +1 -1
- package/zh/components/reduck-migration.md +1 -0
- package/zh/configure/app/dev/asset-prefix.md +1 -1
- package/zh/configure/app/dev/hmr.md +1 -1
- package/zh/configure/app/dev/https.md +1 -1
- package/zh/configure/app/dev/port.md +1 -1
- package/zh/configure/app/dev/progress-bar.md +1 -1
- package/zh/configure/app/dev/start-url.md +1 -1
- package/zh/configure/app/experiments/_category_.json +4 -0
- package/zh/configure/app/experiments/lazy-compilation.md +1 -1
- package/zh/configure/app/html/_category_.json +4 -0
- package/zh/configure/app/html/app-icon.md +1 -1
- package/zh/configure/app/html/crossorigin.md +1 -1
- package/zh/configure/app/html/disable-html-folder.md +1 -1
- package/zh/configure/app/html/favicon-by-entries.md +1 -1
- package/zh/configure/app/html/favicon.md +1 -1
- package/zh/configure/app/html/inject-by-entries.md +1 -1
- package/zh/configure/app/html/inject.md +1 -1
- package/zh/configure/app/html/meta-by-entries.md +1 -1
- package/zh/configure/app/html/meta.md +1 -1
- package/zh/configure/app/html/mount-id.md +1 -1
- package/zh/configure/app/html/template-by-entries.md +1 -1
- package/zh/configure/app/html/template-parameters-by-entries.md +1 -1
- package/zh/configure/app/html/template-parameters.md +1 -1
- package/zh/configure/app/html/template.md +1 -1
- package/zh/configure/app/html/title-by-entries.md +1 -1
- package/zh/configure/app/html/title.md +1 -1
- package/zh/configure/app/output/asset-prefix.md +1 -1
- package/zh/configure/app/output/assets-retry.md +1 -1
- package/zh/configure/app/output/charset.md +1 -1
- package/zh/configure/app/output/clean-dist-path.md +1 -1
- package/zh/configure/app/output/convert-to-rem.md +1 -1
- package/zh/configure/app/output/copy.md +1 -1
- package/zh/configure/app/output/css-module-local-ident-name.md +1 -1
- package/zh/configure/app/output/data-uri-limit.md +1 -1
- package/zh/configure/app/output/disable-css-extract.md +1 -1
- package/zh/configure/app/output/disable-css-module-extension.md +1 -1
- package/zh/configure/app/output/disable-filename-hash.md +1 -1
- package/zh/configure/app/output/disable-inline-runtime-chunk.md +1 -1
- package/zh/configure/app/output/disable-minimize.md +1 -1
- package/zh/configure/app/output/disable-source-map.md +1 -1
- package/zh/configure/app/output/disable-ts-checker.md +1 -1
- package/zh/configure/app/output/dist-path.md +1 -1
- package/zh/configure/app/output/enable-asset-fallback.md +1 -1
- package/zh/configure/app/output/enable-asset-manifest.md +1 -1
- package/zh/configure/app/output/enable-css-module-tsdeclaration.md +1 -1
- package/zh/configure/app/output/enable-inline-scripts.md +1 -1
- package/zh/configure/app/output/enable-inline-styles.md +1 -1
- package/zh/configure/app/output/enable-latest-decorators.md +1 -1
- package/zh/configure/app/output/externals.md +1 -1
- package/zh/configure/app/output/filename.md +1 -1
- package/zh/configure/app/output/legal-comments.md +1 -1
- package/zh/configure/app/output/override-browserslist.md +1 -1
- package/zh/configure/app/output/polyfill.md +1 -1
- package/zh/configure/app/output/ssg.md +118 -114
- package/zh/configure/app/output/svg-default-export.md +1 -1
- package/zh/configure/app/performance/_category_.json +4 -0
- package/zh/configure/app/performance/build-cache.md +1 -1
- package/zh/configure/app/performance/bundle-analyze.md +1 -1
- package/zh/configure/app/performance/chunk-split.md +1 -1
- package/zh/configure/app/performance/print-file-size.md +1 -1
- package/zh/configure/app/performance/profile.md +1 -1
- package/zh/configure/app/performance/remove-console.md +1 -1
- package/zh/configure/app/performance/remove-moment-locale.md +1 -1
- package/zh/configure/app/plugins.md +1 -1
- package/zh/configure/app/runtime/state.md +13 -0
- package/zh/configure/app/security/_category_.json +4 -0
- package/zh/configure/app/security/sri.md +1 -1
- package/zh/configure/app/server/ssr.md +0 -2
- package/zh/configure/app/source/alias.md +1 -1
- package/zh/configure/app/source/compile-js-data-uri.md +1 -1
- package/zh/configure/app/source/define.md +1 -1
- package/zh/configure/app/source/exclude.md +1 -1
- package/zh/configure/app/source/global-vars.md +1 -1
- package/zh/configure/app/source/include.md +1 -1
- package/zh/configure/app/source/module-scopes.md +1 -1
- package/zh/configure/app/source/pre-entry.md +1 -1
- package/zh/configure/app/source/resolve-extension-prefix.md +1 -1
- package/zh/configure/app/source/resolve-main-fields.md +1 -1
- package/zh/configure/app/tools/autoprefixer.md +1 -1
- package/zh/configure/app/tools/babel.md +1 -1
- package/zh/configure/app/tools/css-extract.md +1 -1
- package/zh/configure/app/tools/css-loader.md +1 -1
- package/zh/configure/app/tools/dev-server.md +1 -1
- package/zh/configure/app/tools/html-plugin.md +1 -1
- package/zh/configure/app/tools/inspector.md +1 -1
- package/zh/configure/app/tools/less.md +1 -1
- package/zh/configure/app/tools/minify-css.md +1 -1
- package/zh/configure/app/tools/postcss.md +1 -1
- package/zh/configure/app/tools/pug.md +1 -1
- package/zh/configure/app/tools/sass.md +1 -1
- package/zh/configure/app/tools/style-loader.md +1 -1
- package/zh/configure/app/tools/styled-components.md +1 -1
- package/zh/configure/app/tools/swc.md +42 -0
- package/zh/configure/app/tools/terser.md +1 -1
- package/zh/configure/app/tools/ts-checker.md +1 -1
- package/zh/configure/app/tools/ts-loader.md +1 -1
- package/zh/configure/app/tools/webpack-chain.md +1 -1
- package/zh/configure/app/tools/webpack.md +1 -1
- package/zh/guides/advanced-features/custom-app.md +8 -2
- package/zh/guides/advanced-features/ssg.md +74 -63
- package/zh/guides/advanced-features/ssr.md +74 -11
- package/zh/guides/basic-features/builder.md +46 -0
- package/zh/guides/basic-features/css/_category_.json +1 -1
- package/zh/guides/basic-features/css/less-sass.md +1 -14
- package/zh/guides/basic-features/data-fetch.md +1 -1
- package/zh/guides/basic-features/env-vars.md +34 -0
- package/zh/guides/basic-features/routes.md +32 -35
- package/zh/guides/concept/entries.md +4 -4
- package/zh/guides/topic-detail/framework-plugin/extend.md +3 -4
- package/zh/{apis/app/runtime/plugin/hook-api.md → guides/topic-detail/framework-plugin/hook-list.md} +42 -135
- package/zh/{apis/app/runtime/plugin → guides/topic-detail/framework-plugin}/hook.md +2 -3
- package/zh/guides/topic-detail/framework-plugin/implement.md +21 -10
- package/zh/guides/topic-detail/framework-plugin/introduction.md +49 -0
- package/{en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin → zh/guides/topic-detail/framework-plugin}/plugin-api.md +3 -4
- package/zh/guides/topic-detail/framework-plugin/relationship.md +2 -3
- package/zh/guides/topic-detail/model/quick-start.md +4 -0
- package/zh/tutorials/first-app/c01-getting-started/1.2-minimal-mwa.md +2 -2
- package/zh/tutorials/first-app/c01-getting-started/1.4-enable-ssr.md +5 -2
- package/zh/tutorials/first-app/c02-generator-and-studio/2.2-boilerplates.md +4 -6
- package/zh/tutorials/first-app/c02-generator-and-studio/2.3-configuration.md +2 -4
- package/zh/tutorials/first-app/c03-ide/3.1-setting-up.md +1 -1
- package/zh/tutorials/first-app/c03-ide/3.2-hints-in-ide.md +44 -50
- package/zh/tutorials/first-app/c03-ide/3.3-autofix-in-ide.md +1 -1
- package/zh/tutorials/first-app/c03-ide/3.4-autofix-in-cli.md +4 -4
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.1-use-es6-plus.md +8 -21
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.2-use-typescript.md +37 -13
- package/zh/tutorials/first-app/c05-component/5.1-use-ui-library.md +3 -13
- package/zh/tutorials/first-app/c05-component/5.2-use-standalone-component.md +1 -21
- package/zh/tutorials/first-app/c06-css-and-component/6.1-css-in-js.md +9 -9
- package/zh/tutorials/first-app/c06-css-and-component/6.2-utility-class.md +9 -14
- package/zh/tutorials/first-app/c06-css-and-component/6.3-postcss.md +7 -7
- package/zh/tutorials/first-app/c06-css-and-component/6.4-design-system.md +1 -1
- package/zh/tutorials/first-app/c06-css-and-component/6.5-storybook.md +2 -2
- package/zh/tutorials/first-app/c06-css-and-component/6.6-testing.md +8 -17
- package/zh/tutorials/first-app/c07-app-entry/7.1-intro.md +23 -18
- package/zh/tutorials/first-app/c07-app-entry/7.2-add-entry-in-cli.md +30 -30
- package/zh/tutorials/first-app/c07-app-entry/7.3-manage-entries-by-hand.md +4 -9
- package/zh/tutorials/first-app/c08-client-side-routing/8.1-code-based-routing.md +66 -63
- package/zh/tutorials/first-app/c09-bff/9.2-enable-bff.md +35 -33
- package/zh/tutorials/first-app/c09-bff/9.3-fetch-bff.md +28 -102
- package/zh/tutorials/first-app/c10-model/10.1-application-architecture.md +4 -6
- package/zh/tutorials/first-app/c10-model/10.2-add-model.md +3 -3
- package/zh/tutorials/first-app/c10-model/10.3-use-model.md +21 -20
- package/zh/tutorials/first-app/c10-model/10.4-testing.md +2 -2
- package/zh/tutorials/first-app/c11-container/11.1-use-model-with-app-state.md +34 -68
- package/zh/tutorials/first-app/c11-container/11.2-add-container.md +40 -37
- package/zh/tutorials/first-app/c11-container/11.3-use-loader.md +6 -4
- package/zh/tutorials/first-app/c11-container/11.4-testing.md +2 -2
- package/zh/tutorials/foundations/introduction.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/default-alias.md +0 -25
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/_category_.json +0 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/abstract.md +0 -26
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/hook-api.md +0 -896
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/hook.md +0 -170
- package/zh/apis/app/runtime/default-alias.md +0 -23
- package/zh/apis/app/runtime/plugin/_category_.json +0 -4
- package/zh/apis/app/runtime/plugin/abstract.md +0 -26
- package/zh/apis/app/runtime/plugin/plugin-api.md +0 -117
- package/zh/guides/basic-features/image.md +0 -43
- package/zh/guides/topic-detail/compile-speed.md +0 -182
- package/zh/guides/topic-detail/framework-plugin/abstract.md +0 -27
- package/zh/guides/troubleshooting/compile.md +0 -379
- package/zh/tutorials/first-app/c08-client-side-routing/8.2-file-based-routing.md +0 -310
package/zh/{apis/app/runtime/plugin/hook-api.md → guides/topic-detail/framework-plugin/hook-list.md}
RENAMED
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Hook 列表
|
|
3
|
+
sidebar_position: 8
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
在 Modern.js 中暴露了三类插件:CLI、Runtime、Server。下面列举下各类中的 Hook:
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
## CLI
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
这一部分的 Hook 模型是所有工程方案都有的,就是说在任意的工程方案中都可以在插件中添加实现对应的中间件函数。
|
|
12
|
-
|
|
13
|
-
接下来对支持的所有基础 Hook 分别进行介绍。
|
|
14
|
-
|
|
15
|
-
#### `config`
|
|
10
|
+
### `config`
|
|
16
11
|
|
|
17
12
|
- 功能:收集配置
|
|
18
13
|
- 执行阶段:解析完 `modern.config.ts` 中的配置之后
|
|
@@ -38,7 +33,7 @@ export default (): CliPlugin => ({
|
|
|
38
33
|
|
|
39
34
|
这里返回的配置信息,会被收集和统一处理合并。
|
|
40
35
|
|
|
41
|
-
|
|
36
|
+
### `validateSchema`
|
|
42
37
|
|
|
43
38
|
- 功能:收集各个插件中配置的用来校验用户配置的 [JSON Schema](https://json-schema.org/)
|
|
44
39
|
- 执行阶段:`config` Hook 运行完之后。
|
|
@@ -104,7 +99,7 @@ $ modern dev
|
|
|
104
99
|
| ^^^^^ Property foo is not expected to be here
|
|
105
100
|
```
|
|
106
101
|
|
|
107
|
-
|
|
102
|
+
### `prepare`
|
|
108
103
|
|
|
109
104
|
- 功能:运行主流程的前置准备流程
|
|
110
105
|
- 执行阶段:校验完配置之后
|
|
@@ -126,7 +121,7 @@ export default (): CliPlugin => ({
|
|
|
126
121
|
});
|
|
127
122
|
```
|
|
128
123
|
|
|
129
|
-
|
|
124
|
+
### `commands`
|
|
130
125
|
|
|
131
126
|
- 功能:为 command 添加新的命令
|
|
132
127
|
- 执行阶段:`prepare` Hook 运行完之后
|
|
@@ -168,7 +163,7 @@ $ modern foo
|
|
|
168
163
|
foo
|
|
169
164
|
```
|
|
170
165
|
|
|
171
|
-
|
|
166
|
+
### `beforeExit`
|
|
172
167
|
|
|
173
168
|
- 功能:在退出进程前,重置一些文件状态
|
|
174
169
|
- 执行阶段:进程退出之前
|
|
@@ -190,17 +185,7 @@ export default (): CliPlugin => ({
|
|
|
190
185
|
});
|
|
191
186
|
```
|
|
192
187
|
|
|
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`
|
|
188
|
+
### `beforeDev`
|
|
204
189
|
|
|
205
190
|
- 功能:运行 dev 主流程的之前的任务
|
|
206
191
|
- 执行阶段:`dev` 命令运行时,项目开始启动前执行
|
|
@@ -222,7 +207,7 @@ export default (): CliPlugin => ({
|
|
|
222
207
|
});
|
|
223
208
|
```
|
|
224
209
|
|
|
225
|
-
|
|
210
|
+
### `afterDev`
|
|
226
211
|
|
|
227
212
|
- 功能:运行 dev 主流程的之后的任务
|
|
228
213
|
- 执行阶段:`dev` 命令运行时,项目启动完成之后执行
|
|
@@ -244,7 +229,7 @@ export default (): CliPlugin => ({
|
|
|
244
229
|
});
|
|
245
230
|
```
|
|
246
231
|
|
|
247
|
-
|
|
232
|
+
### `beforeCreateCompiler`
|
|
248
233
|
|
|
249
234
|
- 功能:在中间件函数中可以拿到创建 Webpack Compiler 的 Webpack 配置
|
|
250
235
|
- 执行阶段:创建 Webpack Compiler 之前执行
|
|
@@ -266,7 +251,7 @@ export default (): CliPlugin => ({
|
|
|
266
251
|
});
|
|
267
252
|
```
|
|
268
253
|
|
|
269
|
-
|
|
254
|
+
### `afterCreateCompiler`
|
|
270
255
|
|
|
271
256
|
- 功能:在中间件函数中可以拿到创建的 Webpack Compiler
|
|
272
257
|
- 执行阶段:创建 Webpack Compiler 之后执行
|
|
@@ -288,7 +273,7 @@ export default (): CliPlugin => ({
|
|
|
288
273
|
});
|
|
289
274
|
```
|
|
290
275
|
|
|
291
|
-
|
|
276
|
+
### `beforePrintInstructions`
|
|
292
277
|
|
|
293
278
|
- 功能:在中间件函数中可以拿到即将打印的日志信息,并对其进行修改
|
|
294
279
|
- 执行阶段:打印日志信息之前执行
|
|
@@ -313,7 +298,7 @@ export default (): CliPlugin => ({
|
|
|
313
298
|
});
|
|
314
299
|
```
|
|
315
300
|
|
|
316
|
-
|
|
301
|
+
### `beforeBuild`
|
|
317
302
|
|
|
318
303
|
- 功能:运行 build 主流程的之前的任务,可以拿到构建的 Webpack 配置
|
|
319
304
|
- 执行阶段:`build` 命令运行时,项目构建启动前执行
|
|
@@ -335,7 +320,7 @@ export default (): CliPlugin => ({
|
|
|
335
320
|
});
|
|
336
321
|
```
|
|
337
322
|
|
|
338
|
-
|
|
323
|
+
### `afterBuild`
|
|
339
324
|
|
|
340
325
|
- 功能:运行 build 主流程的之后的任务
|
|
341
326
|
- 执行阶段:`build` 命令运行时,项目构建完成之后执行
|
|
@@ -357,7 +342,7 @@ export default (): CliPlugin => ({
|
|
|
357
342
|
});
|
|
358
343
|
```
|
|
359
344
|
|
|
360
|
-
|
|
345
|
+
### `modifyEntryImports`
|
|
361
346
|
|
|
362
347
|
- 功能:用于修改、添加生成入口文件中的 `import` 语句
|
|
363
348
|
- 执行阶段:生成入口文件之前,[`prepare`](#prepare) 阶段触发
|
|
@@ -389,7 +374,7 @@ export default (): CliPlugin => ({
|
|
|
389
374
|
});
|
|
390
375
|
```
|
|
391
376
|
|
|
392
|
-
|
|
377
|
+
### `modifyEntryExport`
|
|
393
378
|
|
|
394
379
|
- 功能:用于修改生成入口文件中的 `export` 语句
|
|
395
380
|
- 执行阶段:生成入口文件之前,[`prepare`](#prepare) 阶段触发
|
|
@@ -416,7 +401,7 @@ export default (): CliPlugin => ({
|
|
|
416
401
|
});
|
|
417
402
|
```
|
|
418
403
|
|
|
419
|
-
|
|
404
|
+
### `modifyEntryRuntimePlugins`
|
|
420
405
|
|
|
421
406
|
- 功能:用于添加、修改生成入口文件中的 [Runtime 插件](#Runtime)
|
|
422
407
|
- 执行阶段:生成入口文件之前,[`prepare`](#prepare) 阶段触发
|
|
@@ -451,7 +436,7 @@ export default (): CliPlugin => ({
|
|
|
451
436
|
});
|
|
452
437
|
```
|
|
453
438
|
|
|
454
|
-
|
|
439
|
+
### `modifyEntryRenderFunction`
|
|
455
440
|
|
|
456
441
|
- 功能:用于修改生成入口文件中 `render` 函数
|
|
457
442
|
- 执行阶段:生成入口文件之前,[`prepare`](#prepare) 阶段触发
|
|
@@ -477,7 +462,7 @@ export default (): CliPlugin => ({
|
|
|
477
462
|
});
|
|
478
463
|
```
|
|
479
464
|
|
|
480
|
-
|
|
465
|
+
### `modifyFileSystemRoutes`
|
|
481
466
|
|
|
482
467
|
- 功能:用于修改生成前端页面路由文件中的内容,内容都是需要可序列化的
|
|
483
468
|
- 执行阶段:生成前端路由文件之前,[`prepare`](#prepare) 阶段触发
|
|
@@ -511,7 +496,7 @@ export default (): CliPlugin => ({
|
|
|
511
496
|
|
|
512
497
|
这样就为前端新增了一个页面路由。
|
|
513
498
|
|
|
514
|
-
|
|
499
|
+
### `modifyServerRoutes`
|
|
515
500
|
|
|
516
501
|
- 功能:用于修改生成服务器路由中的内容
|
|
517
502
|
- 执行阶段:生成 Server 路由文件之前,[`prepare`](#prepare) 阶段触发
|
|
@@ -544,7 +529,7 @@ export default (): CliPlugin => ({
|
|
|
544
529
|
});
|
|
545
530
|
```
|
|
546
531
|
|
|
547
|
-
|
|
532
|
+
### `modifyAsyncEntry`
|
|
548
533
|
|
|
549
534
|
- 功能:用于修改包裹入口文件的异步模块,参见 [source.enableAsyncEntry](/docs/configure/app/source/enable-async-entry)
|
|
550
535
|
- 执行阶段:生成入口文件之前,[`prepare`](#prepare) 阶段触发
|
|
@@ -570,7 +555,7 @@ export default (): CliPlugin => ({
|
|
|
570
555
|
});
|
|
571
556
|
```
|
|
572
557
|
|
|
573
|
-
|
|
558
|
+
### `htmlPartials`
|
|
574
559
|
|
|
575
560
|
- 功能:用于定制生成的 HTML 页面模版
|
|
576
561
|
- 执行阶段:[`prepare`](#prepare) 阶段触发
|
|
@@ -598,11 +583,15 @@ export default (): CliPlugin => ({
|
|
|
598
583
|
|
|
599
584
|
这样就为 HTML 模版中新增了一个 Script 标签。
|
|
600
585
|
|
|
601
|
-
|
|
586
|
+
## Server
|
|
587
|
+
|
|
588
|
+
:::note
|
|
589
|
+
目前 Server 插件还未完全开放,API 不保证稳定,使用需谨慎。
|
|
590
|
+
:::
|
|
602
591
|
|
|
603
592
|
应用工程中的 Server 部分也支持了插件。其中的 Hook 将会提供一些特定阶段调用和特殊功能的 Hook。
|
|
604
593
|
|
|
605
|
-
|
|
594
|
+
### `create`
|
|
606
595
|
|
|
607
596
|
- 功能:在中间件函数中会拿到 Server 初始化用到的指标测量工具配置 `measureOptions` 和日志工具配置 `loggerOptions`,并返回自定义的指标测量工具 `measure` 和日志工具配置 `logger`
|
|
608
597
|
- 执行阶段:Server 初始化
|
|
@@ -624,7 +613,7 @@ export default (): ServerPlugin => ({
|
|
|
624
613
|
});
|
|
625
614
|
```
|
|
626
615
|
|
|
627
|
-
|
|
616
|
+
### `prepareWebServer`
|
|
628
617
|
|
|
629
618
|
- 功能:设置 Web 路由的处理函数,在中间件函数中可以拿到 Web Server 的前置中间件
|
|
630
619
|
- 执行阶段:在请求到达的时候
|
|
@@ -650,7 +639,7 @@ export default (): ServerPlugin => ({
|
|
|
650
639
|
});
|
|
651
640
|
```
|
|
652
641
|
|
|
653
|
-
|
|
642
|
+
### `prepareApiServer`
|
|
654
643
|
|
|
655
644
|
- 功能:设置 API 路由的处理函数,在中间件函数中可以拿到 API Server 的前置中间件
|
|
656
645
|
- 执行阶段:请求到达并且 match bff basename 之后执行
|
|
@@ -676,11 +665,15 @@ export default (): ServerPlugin => ({
|
|
|
676
665
|
});
|
|
677
666
|
```
|
|
678
667
|
|
|
679
|
-
|
|
668
|
+
## Runtime
|
|
669
|
+
|
|
670
|
+
:::note
|
|
671
|
+
目前 Runtime 插件还未完全开放,API 不保证稳定,使用需谨慎。
|
|
672
|
+
:::
|
|
680
673
|
|
|
681
674
|
Runtime 插件主要用于开发者修改需要渲染的组件与 Element 和定制服务器端、客户端的渲染过程。
|
|
682
675
|
|
|
683
|
-
|
|
676
|
+
### `init`
|
|
684
677
|
|
|
685
678
|
- 功能:执行 `App.init`
|
|
686
679
|
- 执行阶段:渲染(SSR/CSR)
|
|
@@ -703,7 +696,7 @@ export default (): Plugin => ({
|
|
|
703
696
|
});
|
|
704
697
|
```
|
|
705
698
|
|
|
706
|
-
|
|
699
|
+
### `hoc`
|
|
707
700
|
|
|
708
701
|
- 功能:修改需要渲染的组件
|
|
709
702
|
- 执行阶段:渲染(SSR/CSR)
|
|
@@ -735,7 +728,7 @@ export default (): Plugin => ({
|
|
|
735
728
|
});
|
|
736
729
|
```
|
|
737
730
|
|
|
738
|
-
|
|
731
|
+
### `provide`
|
|
739
732
|
|
|
740
733
|
- 功能:修改需要渲染的 Element
|
|
741
734
|
- 执行阶段:渲染(SSR/CSR)
|
|
@@ -758,7 +751,7 @@ export default (): Plugin => ({
|
|
|
758
751
|
});
|
|
759
752
|
```
|
|
760
753
|
|
|
761
|
-
|
|
754
|
+
### `client`
|
|
762
755
|
|
|
763
756
|
- 功能:定制客户端渲染流程
|
|
764
757
|
- 执行阶段:在浏览器客户端渲染
|
|
@@ -784,7 +777,7 @@ export default (): Plugin => ({
|
|
|
784
777
|
});
|
|
785
778
|
```
|
|
786
779
|
|
|
787
|
-
|
|
780
|
+
### `server`
|
|
788
781
|
|
|
789
782
|
- 功能:定制服务器端渲染流程
|
|
790
783
|
- 执行阶段:SSR
|
|
@@ -808,89 +801,3 @@ export default (): Plugin => ({
|
|
|
808
801
|
},
|
|
809
802
|
});
|
|
810
803
|
```
|
|
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 的插件:[基础](#基础)。
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
+
title: Hook 模型
|
|
2
3
|
sidebar_position: 2
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
# Hook 模型
|
|
6
|
-
|
|
7
6
|
首先介绍一下 Modern.js 的基础的插件系统中的一些内容,包括 Hook 模型的工作方式、各个 Hook 模型的运行模式、Manager 的工作模式。
|
|
8
7
|
|
|
9
8
|
每种 Hook 模型都是独立的,可以独立管理运行函数。
|
|
@@ -167,4 +166,4 @@ workflow.run(5) // [6, 10]
|
|
|
167
166
|
</div>
|
|
168
167
|
</div>
|
|
169
168
|
|
|
170
|
-
Workflow、Waterfall 其实都是 Pipeline 的变体,Pipeline 可以通过特定的写法来实现 Workflow、Waterfall
|
|
169
|
+
Workflow、Waterfall 其实都是 Pipeline 的变体,Pipeline 可以通过特定的写法来实现 Workflow、Waterfall,但都较为麻烦,有许多隐形的约定。为了方便使用,提供了这两种变体来满足这种特殊场景。
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: 如何编写插件
|
|
3
|
+
sidebar_position: 3
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Modern.js 支持通过自定义插件的方式来实现个性化功能。
|
|
6
|
+
上一小节介绍了 Modern.js 插件的 Hook 模型,这一小节介绍如何编写插件。
|
|
8
7
|
|
|
9
8
|
## 实现插件
|
|
10
9
|
|
|
@@ -31,6 +30,8 @@ const MyPlugin = {
|
|
|
31
30
|
};
|
|
32
31
|
```
|
|
33
32
|
|
|
33
|
+
另外,在插件中,允许配置与其他插件的执行顺序,详情可以参考[插件关系](/docs/guides/topic-detail/framework-plugin/relationship)。
|
|
34
|
+
|
|
34
35
|
### 插件类型
|
|
35
36
|
|
|
36
37
|
使用 TypeScript 时,可以引入内置的 `CliPlugin` 类型,为插件提供正确的类型推导:
|
|
@@ -53,9 +54,19 @@ const MyPlugin: CliPlugin = {
|
|
|
53
54
|
};
|
|
54
55
|
```
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
Modern.js 导出的 `Plugin` 类型支持泛型扩展。
|
|
58
|
+
|
|
59
|
+
在 Modern.js 中,任意插件可以注册自己的 Hook,如果想拥有其他插件注册的 Hook 的类型,可以添加泛型:
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
import type { CliPlugin } from '@modern-js/core';
|
|
63
|
+
import type { MyPluginHook } from 'xxx';
|
|
64
|
+
|
|
65
|
+
const MyPlugin: CliPlugin<MyPluginHook> = {};
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
详细说明,请参考 [扩展 Hook](/docs/guides/topic-detail/framework-plugin/extend)。
|
|
69
|
+
|
|
59
70
|
|
|
60
71
|
### 插件配置项
|
|
61
72
|
|
|
@@ -79,7 +90,7 @@ const MyPlugin = (options: MyPluginOptions): CliPlugin => ({
|
|
|
79
90
|
|
|
80
91
|
### 插件 API
|
|
81
92
|
|
|
82
|
-
插件的 setup 函数会接收一个 api 入参,你可以调用 api 上提供的一些方法来获取到配置、应用上下文等信息。
|
|
93
|
+
插件的 `setup` 函数会接收一个 api 入参,你可以调用 api 上提供的一些方法来获取到配置、应用上下文等信息。
|
|
83
94
|
|
|
84
95
|
```ts
|
|
85
96
|
import type { CliPlugin } from '@modern-js/core';
|
|
@@ -98,7 +109,7 @@ export default (): CliPlugin => ({
|
|
|
98
109
|
});
|
|
99
110
|
```
|
|
100
111
|
|
|
101
|
-
插件 API 的详细说明,请参考 [Plugin API](/docs/
|
|
112
|
+
插件 API 的详细说明,请参考 [Plugin API](/docs/guides/topic-detail/framework-plugin/plugin-api)。
|
|
102
113
|
|
|
103
114
|
### 异步 setup
|
|
104
115
|
|
|
@@ -149,7 +160,7 @@ export default defineConfig({
|
|
|
149
160
|
|
|
150
161
|
### 在 npm 上发布插件
|
|
151
162
|
|
|
152
|
-
如果需要将 Modern.js 插件发布到 npm,推荐使用 Modern.js
|
|
163
|
+
如果需要将 Modern.js 插件发布到 npm,推荐使用 Modern.js 中的模块工程方案来管理和构建。
|
|
153
164
|
|
|
154
165
|
首先创建一个空的模块工程方案项目,调整 npm 包名称:
|
|
155
166
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 介绍
|
|
3
|
+
sidebar_position: 1
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Modern.js 插件系统
|
|
7
|
+
|
|
8
|
+
Modern.js 用于扩展项目运行、请求、渲染等不同阶段功能的系统,主要分为三个部分:Hook 模型、管理器,上下文共享机制。
|
|
9
|
+
|
|
10
|
+
Hook 模型用于确定当前 Hook 的执行方式,不同 Hook 模型的函数拥有不同的执行逻辑。管理器用于控制 Hook 的执行与调度。上下文共享机制用于在不同 Hook 间传递信息。
|
|
11
|
+
|
|
12
|
+
目前 Modern.js 提供几种不同的 Hook 模型:
|
|
13
|
+
|
|
14
|
+
- Pipeline
|
|
15
|
+
- Sync
|
|
16
|
+
- Async
|
|
17
|
+
- Waterfall
|
|
18
|
+
- Sync
|
|
19
|
+
- Async
|
|
20
|
+
- Workflow
|
|
21
|
+
- Sync
|
|
22
|
+
- Async
|
|
23
|
+
- Parallel(Async)
|
|
24
|
+
|
|
25
|
+
:::note
|
|
26
|
+
后续章节详细介绍各个模型的执行方式。
|
|
27
|
+
:::
|
|
28
|
+
|
|
29
|
+
基于 Hook 模型和管理器,Modern.js 暴露了三套插件:CLI、Runtime、Server。
|
|
30
|
+
|
|
31
|
+
其中 CLI 插件是 Modern.js 中主要的运行流程控制模型,Modern.js 中绝大部分功能都是主要通过这一套模型运行的。Runtime 插件主要负责处理 React 组件渲染逻辑。Server 插件主要用于对服务端的生命周期以及用户请求的控制。
|
|
32
|
+
|
|
33
|
+
## 插件可以做什么
|
|
34
|
+
|
|
35
|
+
Modern.js 的所有功能都是通过这套插件实现的,这意味着 Modern.js 中的所有能力是都对开发者开放的。开发者可以通过编写插件来扩展更多功能,适配复杂场景,包括但不限于:
|
|
36
|
+
|
|
37
|
+
- 注册命令
|
|
38
|
+
- 修改 Modern.js 配置、配置校验 Schema
|
|
39
|
+
- 修改编译时的 Webpack/Babel/Less/Sass/Tailwind CSS/... 配置
|
|
40
|
+
- 修改运行时需要渲染的 React 组件、Element
|
|
41
|
+
- 修改页面路由
|
|
42
|
+
- 修改服务器路由
|
|
43
|
+
- 自定义控制台输出
|
|
44
|
+
- 自定义动态 HTML 模版
|
|
45
|
+
- 自定义 Node.js 服务器框架
|
|
46
|
+
- 自定义 React 组件客户端/服务器端渲染
|
|
47
|
+
- ...
|
|
48
|
+
|
|
49
|
+
当 Modern.js 暂时没有覆盖到你所需要的功能或场景时,可以开发一个自定义插件,来实现适配特殊场景的相关功能。
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: 插件 API
|
|
3
|
+
sidebar_position: 6
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
插件的 setup 函数会接收一个 api 入参,你可以调用 api 上提供的一些方法来获取到配置、应用上下文等信息。
|
|
6
|
+
插件的 `setup` 函数会接收一个 `api` 入参,你可以调用 api 上提供的一些方法来获取到配置、应用上下文等信息。
|
|
8
7
|
|
|
9
8
|
```ts
|
|
10
9
|
import type { CliPlugin } from '@modern-js/core';
|
|
@@ -3,6 +3,10 @@ sidebar_position: 1
|
|
|
3
3
|
title: 快速上手
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
import ReduckMigration from '@site-docs/components/reduck-migration.md'
|
|
7
|
+
|
|
8
|
+
<ReduckMigration />
|
|
9
|
+
|
|
6
10
|
[Reduck](https://github.com/modern-js-dev/reduck) 是 Modern.js 团队开发的遵循 MVC 模式的状态管理库,底层状态存储基于 [Redux](https://redux.js.org/) 实现,同时提供更高层级的抽象,并完全兼容 Redux 生态。
|
|
7
11
|
|
|
8
12
|
Reduck 的目标是以 MVC 模式组织 React 应用开发结构,将业务逻辑维护在 Model 层,业务逻辑与 UI 解耦,让开发业务逻辑更集中、更简单,同时通过更高层级的抽象,减少重复工作(样板代码)。
|
|
@@ -75,10 +75,10 @@ ni package.json
|
|
|
75
75
|
"dependencies": {
|
|
76
76
|
"react": "^17",
|
|
77
77
|
"react-dom": "^17",
|
|
78
|
-
"@modern-js/runtime": "^
|
|
78
|
+
"@modern-js/runtime": "^2.0.0"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@modern-js/app-tools": "^
|
|
81
|
+
"@modern-js/app-tools": "^2.0.0"
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
```
|
|
@@ -6,18 +6,21 @@ title: 启用 SSR
|
|
|
6
6
|
|
|
7
7
|
在项目根目录下创建 `modern.config.js`:
|
|
8
8
|
|
|
9
|
+
import Tabs from '@theme/Tabs';
|
|
10
|
+
import TabItem from '@theme/TabItem';
|
|
11
|
+
|
|
9
12
|
<Tabs>
|
|
10
13
|
<TabItem value="macOS" label="macOS" default>
|
|
11
14
|
|
|
12
15
|
```bash
|
|
13
|
-
touch modern.config.
|
|
16
|
+
touch modern.config.ts
|
|
14
17
|
```
|
|
15
18
|
|
|
16
19
|
</TabItem>
|
|
17
20
|
<TabItem value="Windows" label="Windows">
|
|
18
21
|
|
|
19
22
|
```bash
|
|
20
|
-
ni modern.config.
|
|
23
|
+
ni modern.config.ts
|
|
21
24
|
```
|
|
22
25
|
|
|
23
26
|
</TabItem>
|
|
@@ -15,17 +15,15 @@ title: 样板文件
|
|
|
15
15
|
├── .prettierrc
|
|
16
16
|
├── .vscode
|
|
17
17
|
├── README.md
|
|
18
|
-
├── modern.config.
|
|
18
|
+
├── modern.config.js
|
|
19
19
|
├── package.json
|
|
20
|
-
├── pnpm-lock.yaml
|
|
21
20
|
├── src
|
|
22
21
|
│ ├── .eslintrc.js
|
|
23
|
-
│ ├── modern-app-env.d.ts
|
|
24
22
|
│ └── routes
|
|
25
23
|
│ ├── index.css
|
|
26
|
-
│ ├── layout.
|
|
27
|
-
│ └── page.
|
|
28
|
-
└──
|
|
24
|
+
│ ├── layout.jsx
|
|
25
|
+
│ └── page.jsx
|
|
26
|
+
└── pnpm-lock.yaml
|
|
29
27
|
```
|
|
30
28
|
|
|
31
29
|
和上一章节手动创建出来的项目一样,仍然是零配置、极简和轻量的,但功能更完整,最佳实践开箱即用,比如:
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
title: 配置项目
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
通过命令行工具创建的 Modern.js
|
|
5
|
+
通过命令行工具创建的 Modern.js 项目,会默认生成 `modern.config.js` 配置文件。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
这两处都可以进行 Modern.js 项目的配置,并且 `modernConfig` 字段中的配置优先级高于 `modern.config.js` 中相同的内容。
|
|
7
|
+
Modern.js 也支持使用 `package.json` 文件中的 `modernConfig` 字段进行配置,两个位置不支持同时配置同一字段,推荐使用 `modern.config.js` 配置文件进行配置。
|
|
10
8
|
|
|
11
9
|
:::info 注
|
|
12
10
|
|
|
@@ -15,7 +15,7 @@ cd hello-modern/
|
|
|
15
15
|
code .
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-

|
|
19
19
|
|
|
20
20
|
:::info 补充信息
|
|
21
21
|
必须打开项目根目录,不能打开其他子目录或父目录,否则 IDE 支持不会生效。
|