@modern-js/main-doc 0.0.0-next-20221116121040
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/.eslintrc.js +12 -0
- package/CHANGELOG.md +15 -0
- package/LICENSE +144 -0
- package/en/configure/app/dev/asset-prefix.md +13 -0
- package/en/configure/app/dev/hmr.md +13 -0
- package/en/configure/app/dev/https.md +13 -0
- package/en/configure/app/dev/port.md +13 -0
- package/en/configure/app/dev/progress-bar.md +13 -0
- package/en/configure/app/dev/start-url.md +13 -0
- package/en/configure/app/html/app-icon.md +13 -0
- package/en/configure/app/html/crossorigin.md +13 -0
- package/en/configure/app/html/disable-html-folder.md +13 -0
- package/en/configure/app/html/favicon-by-entries.md +13 -0
- package/en/configure/app/html/favicon.md +13 -0
- package/en/configure/app/html/inject-by-entries.md +13 -0
- package/en/configure/app/html/inject.md +13 -0
- package/en/configure/app/html/meta-by-entries.md +13 -0
- package/en/configure/app/html/meta.md +13 -0
- package/en/configure/app/html/mount-id.md +13 -0
- package/en/configure/app/html/template-by-entries.md +13 -0
- package/en/configure/app/html/template-parameters-by-entries.md +13 -0
- package/en/configure/app/html/template-parameters.md +13 -0
- package/en/configure/app/html/template.md +13 -0
- package/en/configure/app/html/title-by-entries.md +13 -0
- package/en/configure/app/html/title.md +13 -0
- package/en/configure/app/output/asset-prefix.md +13 -0
- package/en/configure/app/output/assets-retry.md +13 -0
- package/en/configure/app/output/charset.md +13 -0
- package/en/configure/app/output/clean-dist-path.md +13 -0
- package/en/configure/app/output/convert-to-rem.md +13 -0
- package/en/configure/app/output/copy.md +13 -0
- package/en/configure/app/output/css-module-local-ident-name.md +13 -0
- package/en/configure/app/output/data-uri-limit.md +13 -0
- package/en/configure/app/output/disable-css-module-extension.md +13 -0
- package/en/configure/app/output/disable-filename-hash.md +13 -0
- package/en/configure/app/output/disable-inline-runtime-chunk.md +13 -0
- package/en/configure/app/output/disable-minimize.md +13 -0
- package/en/configure/app/output/disable-source-map.md +13 -0
- package/en/configure/app/output/dist-path.md +13 -0
- package/en/configure/app/output/enable-asset-fallback.md +13 -0
- package/en/configure/app/output/enable-asset-manifest.md +13 -0
- package/en/configure/app/output/enable-css-module-tsdeclaration.md +13 -0
- package/en/configure/app/output/enable-inline-scripts.md +13 -0
- package/en/configure/app/output/enable-inline-styles.md +13 -0
- package/en/configure/app/output/enable-latest-decorators.md +13 -0
- package/en/configure/app/output/externals.md +13 -0
- package/en/configure/app/output/filename.md +13 -0
- package/en/configure/app/output/legal-comments.md +13 -0
- package/en/configure/app/output/override-browserslist.md +13 -0
- package/en/configure/app/output/polyfill.md +13 -0
- package/en/configure/app/output/svg-default-export.md +13 -0
- package/en/configure/app/performance/build-cache.md +13 -0
- package/en/configure/app/performance/bundle-analyze.md +13 -0
- package/en/configure/app/performance/chunk-split.md +13 -0
- package/en/configure/app/performance/print-file-size.md +13 -0
- package/en/configure/app/performance/profile.md +13 -0
- package/en/configure/app/performance/remove-console.md +13 -0
- package/en/configure/app/performance/remove-moment-locale.md +13 -0
- package/en/configure/app/security/sri.md +13 -0
- package/en/configure/app/source/alias.md +13 -0
- package/en/configure/app/source/compile-js-data-uri.md +13 -0
- package/en/configure/app/source/define.md +13 -0
- package/en/configure/app/source/global-vars.md +13 -0
- package/en/configure/app/source/include.md +13 -0
- package/en/configure/app/source/module-scopes.md +13 -0
- package/en/configure/app/source/pre-entry.md +13 -0
- package/en/configure/app/source/resolve-extension-prefix.md +13 -0
- package/en/configure/app/source/resolve-main-fields.md +13 -0
- package/en/configure/app/tools/autoprefixer.md +13 -0
- package/en/configure/app/tools/babel.md +13 -0
- package/en/configure/app/tools/css-extract.md +13 -0
- package/en/configure/app/tools/css-loader.md +13 -0
- package/en/configure/app/tools/dev-server.md +13 -0
- package/en/configure/app/tools/html-plugin.md +13 -0
- package/en/configure/app/tools/inspector.md +13 -0
- package/en/configure/app/tools/less.md +13 -0
- package/en/configure/app/tools/minify-css.md +13 -0
- package/en/configure/app/tools/postcss.md +13 -0
- package/en/configure/app/tools/pug.md +13 -0
- package/en/configure/app/tools/sass.md +13 -0
- package/en/configure/app/tools/style-loader.md +13 -0
- package/en/configure/app/tools/styled-components.md +13 -0
- package/en/configure/app/tools/terser.md +13 -0
- package/en/configure/app/tools/ts-checker.md +13 -0
- package/en/configure/app/tools/ts-loader.md +13 -0
- package/en/configure/app/tools/webpack-chain.md +13 -0
- package/en/configure/app/tools/webpack.md +13 -0
- package/en/tutorials/foundations/_category_.json +5 -0
- package/en/tutorials/foundations/basic.md +8 -0
- package/en/tutorials/foundations/introduction.md +43 -0
- package/package.json +30 -0
- package/scripts/gen-config.ts +60 -0
- package/scripts/sync.ts +36 -0
- package/tsconfig.json +7 -0
- package/zh/apis/app/commands/_category_.json +8 -0
- package/zh/apis/app/commands/build.md +44 -0
- package/zh/apis/app/commands/dev.md +31 -0
- package/zh/apis/app/commands/index.md +12 -0
- package/zh/apis/app/commands/inspect.md +39 -0
- package/zh/apis/app/commands/lint.md +22 -0
- package/zh/apis/app/commands/new.md +59 -0
- package/zh/apis/app/commands/start.md +32 -0
- package/zh/apis/app/commands/test.md +36 -0
- package/zh/apis/app/commands/upgrade.md +23 -0
- package/zh/apis/app/hooks/_category_.json +8 -0
- package/zh/apis/app/hooks/api/_category_.json +4 -0
- package/zh/apis/app/hooks/api/framework/_category_.json +4 -0
- package/zh/apis/app/hooks/api/framework/app.md +100 -0
- package/zh/apis/app/hooks/api/framework/lambda.md +79 -0
- package/zh/apis/app/hooks/api/functions/_category_.json +4 -0
- package/zh/apis/app/hooks/api/functions/api.md +50 -0
- package/zh/apis/app/hooks/api/functions/app.md +10 -0
- package/zh/apis/app/hooks/api/functions/common.md +10 -0
- package/zh/apis/app/hooks/api/test.md +12 -0
- package/zh/apis/app/hooks/config/_category_.json +4 -0
- package/zh/apis/app/hooks/config/html.md +10 -0
- package/zh/apis/app/hooks/config/icon.md +17 -0
- package/zh/apis/app/hooks/config/mock.md +12 -0
- package/zh/apis/app/hooks/config/public.md +30 -0
- package/zh/apis/app/hooks/config/storybook.md +14 -0
- package/zh/apis/app/hooks/config/upload.md +48 -0
- package/zh/apis/app/hooks/index.md +12 -0
- package/zh/apis/app/hooks/modern-config.md +10 -0
- package/zh/apis/app/hooks/server/_category_.json +4 -0
- package/zh/apis/app/hooks/server/index.md +14 -0
- package/zh/apis/app/hooks/server/test.md +12 -0
- package/zh/apis/app/hooks/shared.md +8 -0
- package/zh/apis/app/hooks/src/_category_.json +4 -0
- package/zh/apis/app/hooks/src/app.md +41 -0
- package/zh/apis/app/hooks/src/error.md +10 -0
- package/zh/apis/app/hooks/src/eslint.md +9 -0
- package/zh/apis/app/hooks/src/index.md +35 -0
- package/zh/apis/app/hooks/src/pages.md +183 -0
- package/zh/apis/app/hooks/src/stories.md +14 -0
- package/zh/apis/app/hooks/src/test.md +12 -0
- package/zh/apis/app/overview.md +11 -0
- package/zh/apis/app/runtime/_category_.json +9 -0
- package/zh/apis/app/runtime/app/_category_.json +4 -0
- package/zh/apis/app/runtime/app/bootstrap.md +83 -0
- package/zh/apis/app/runtime/app/create-app.md +47 -0
- package/zh/apis/app/runtime/app/define-config.md +57 -0
- package/zh/apis/app/runtime/app/head.md +43 -0
- package/zh/apis/app/runtime/app/no-ssr.md +41 -0
- package/zh/apis/app/runtime/app/pre-render.md +77 -0
- package/zh/apis/app/runtime/app/use-module-app.md +60 -0
- package/zh/apis/app/runtime/app/use-module-apps.md +64 -0
- package/zh/apis/app/runtime/app/use-runtime-context.md +39 -0
- package/zh/apis/app/runtime/bff-server/_category_.json +4 -0
- package/zh/apis/app/runtime/bff-server/after-lambda-registed.md +35 -0
- package/zh/apis/app/runtime/bff-server/hook.md +120 -0
- package/zh/apis/app/runtime/bff-server/use-context.md +70 -0
- package/zh/apis/app/runtime/container/_category_.json +4 -0
- package/zh/apis/app/runtime/container/router.md +492 -0
- package/zh/apis/app/runtime/container/use-loader.md +64 -0
- package/zh/apis/app/runtime/default-alias.md +26 -0
- package/zh/apis/app/runtime/env.md +68 -0
- package/zh/apis/app/runtime/index.md +12 -0
- package/zh/apis/app/runtime/model/Provider.md +36 -0
- package/zh/apis/app/runtime/model/_category_.json +4 -0
- package/zh/apis/app/runtime/model/auto-actions.md +121 -0
- package/zh/apis/app/runtime/model/connect.md +134 -0
- package/zh/apis/app/runtime/model/create-app.md +74 -0
- package/zh/apis/app/runtime/model/create-store.md +60 -0
- package/zh/apis/app/runtime/model/handle-effect.md +106 -0
- package/zh/apis/app/runtime/model/model_.md +199 -0
- package/zh/apis/app/runtime/model/use-local-model.md +28 -0
- package/zh/apis/app/runtime/model/use-model.md +87 -0
- package/zh/apis/app/runtime/model/use-static-model.md +47 -0
- package/zh/apis/app/runtime/model/use-store.md +48 -0
- package/zh/apis/app/runtime/plugin/_category_.json +4 -0
- package/zh/apis/app/runtime/plugin/abstract.md +26 -0
- package/zh/apis/app/runtime/plugin/hook-api.md +896 -0
- package/zh/apis/app/runtime/plugin/hook.md +170 -0
- package/zh/apis/app/runtime/plugin/plugin-api.md +117 -0
- package/zh/apis/app/runtime/testing/_category_.json +4 -0
- package/zh/apis/app/runtime/testing/act.md +34 -0
- package/zh/apis/app/runtime/testing/cleanup.md +37 -0
- package/zh/apis/app/runtime/testing/render.md +52 -0
- package/zh/apis/app/runtime/testing/renderApp.md +31 -0
- package/zh/apis/app/runtime/utility/_category_.json +4 -0
- package/zh/apis/app/runtime/utility/css-in-js.md +60 -0
- package/zh/apis/app/runtime/utility/loadable/_category_.json +4 -0
- package/zh/apis/app/runtime/utility/loadable/lazy.md +29 -0
- package/zh/apis/app/runtime/utility/loadable/loadable-component.md +61 -0
- package/zh/apis/app/runtime/utility/loadable/loadable-library.md +67 -0
- package/zh/apis/app/runtime/utility/loadable/loadable_.md +110 -0
- package/zh/apis/app/runtime/web-server/_category_.json +4 -0
- package/zh/apis/app/runtime/web-server/hook.md +121 -0
- package/zh/apis/generator/overview.md +32 -0
- package/zh/apis/generator/plugin/_category_.json +4 -0
- package/zh/apis/generator/plugin/file/_category_.json +4 -0
- package/zh/apis/generator/plugin/file/addFile.md +52 -0
- package/zh/apis/generator/plugin/file/addHelper.md +26 -0
- package/zh/apis/generator/plugin/file/addManyFile.md +55 -0
- package/zh/apis/generator/plugin/file/addPartial.md +26 -0
- package/zh/apis/generator/plugin/file/introduce.md +37 -0
- package/zh/apis/generator/plugin/file/rmDir.md +24 -0
- package/zh/apis/generator/plugin/file/rmFile.md +24 -0
- package/zh/apis/generator/plugin/file/updateJSONFile.md +52 -0
- package/zh/apis/generator/plugin/file/updateModernConfig.md +26 -0
- package/zh/apis/generator/plugin/file/updateTextRawFile.md +33 -0
- package/zh/apis/generator/plugin/git/_category_.json +4 -0
- package/zh/apis/generator/plugin/git/gitAddAndCommit.md +20 -0
- package/zh/apis/generator/plugin/git/initGitRepo.md +16 -0
- package/zh/apis/generator/plugin/git/isInGitRepo.md +16 -0
- package/zh/apis/generator/plugin/hook/_category_.json +4 -0
- package/zh/apis/generator/plugin/hook/afterForged.md +35 -0
- package/zh/apis/generator/plugin/hook/onForged.md +35 -0
- package/zh/apis/generator/plugin/info/_category_.json +4 -0
- package/zh/apis/generator/plugin/info/isFileExit.md +22 -0
- package/zh/apis/generator/plugin/info/locale.md +17 -0
- package/zh/apis/generator/plugin/info/readDir.md +22 -0
- package/zh/apis/generator/plugin/input/_category_.json +4 -0
- package/zh/apis/generator/plugin/input/addInputAfter.md +48 -0
- package/zh/apis/generator/plugin/input/addInputBefore.md +48 -0
- package/zh/apis/generator/plugin/input/addOptionAfter.md +45 -0
- package/zh/apis/generator/plugin/input/addOptionBefore.md +45 -0
- package/zh/apis/generator/plugin/input/setInput.md +42 -0
- package/zh/apis/generator/plugin/input/setInputValue.md +28 -0
- package/zh/apis/generator/plugin/input/type.md +101 -0
- package/zh/apis/generator/plugin/introduce.md +93 -0
- package/zh/apis/generator/plugin/new/_category_.json +4 -0
- package/zh/apis/generator/plugin/new/createElement.md +33 -0
- package/zh/apis/generator/plugin/new/createSubProject.md +35 -0
- package/zh/apis/generator/plugin/new/enableFunc.md +46 -0
- package/zh/apis/generator/plugin/new/introduce.md +15 -0
- package/zh/apis/generator/plugin/npm/_category_.json +4 -0
- package/zh/apis/generator/plugin/npm/install.md +16 -0
- package/zh/apis/monorepo/commands/_category_.json +8 -0
- package/zh/apis/monorepo/commands/bump.md +42 -0
- package/zh/apis/monorepo/commands/change.md +58 -0
- package/zh/apis/monorepo/commands/clear.md +27 -0
- package/zh/apis/monorepo/commands/deploy.md +39 -0
- package/zh/apis/monorepo/commands/gen-release-note.md +35 -0
- package/zh/apis/monorepo/commands/index.md +12 -0
- package/zh/apis/monorepo/commands/lint.md +21 -0
- package/zh/apis/monorepo/commands/new.md +41 -0
- package/zh/apis/monorepo/commands/pre.md +68 -0
- package/zh/apis/monorepo/commands/release.md +20 -0
- package/zh/apis/monorepo/commands/upgrade.md +23 -0
- package/zh/apis/monorepo/hooks/_category_.json +8 -0
- package/zh/apis/monorepo/hooks/apps.md +12 -0
- package/zh/apis/monorepo/hooks/code-workspace.md +10 -0
- package/zh/apis/monorepo/hooks/examples.md +14 -0
- package/zh/apis/monorepo/hooks/features.md +14 -0
- package/zh/apis/monorepo/hooks/index.md +12 -0
- package/zh/apis/monorepo/hooks/packages.md +14 -0
- package/zh/apis/monorepo/hooks/pnpm-workspace.md +10 -0
- package/zh/apis/monorepo/hooks/pnpmfile.md +10 -0
- package/zh/apis/monorepo/overview.md +11 -0
- package/zh/community/index.md +3 -0
- package/zh/components/command-tip.md +57 -0
- package/zh/components/deploy.md +60 -0
- package/zh/components/dev-ide.md +1 -0
- package/zh/components/entry-name.md +15 -0
- package/zh/components/env-prepare.md +1 -0
- package/zh/components/launch-bff-choices.md +6 -0
- package/zh/components/reduck-tip.md +5 -0
- package/zh/configure/app/bff/_category_.json +4 -0
- package/zh/configure/app/bff/fetcher.md +32 -0
- package/zh/configure/app/bff/prefix.md +38 -0
- package/zh/configure/app/bff/proxy.md +76 -0
- package/zh/configure/app/dev/_category_.json +4 -0
- package/zh/configure/app/dev/asset-prefix.md +13 -0
- package/zh/configure/app/dev/hmr.md +13 -0
- package/zh/configure/app/dev/https.md +13 -0
- package/zh/configure/app/dev/port.md +13 -0
- package/zh/configure/app/dev/progress-bar.md +13 -0
- package/zh/configure/app/dev/proxy.md +79 -0
- package/zh/configure/app/dev/start-url.md +13 -0
- package/zh/configure/app/dev/with-master-app.md +35 -0
- package/zh/configure/app/html/app-icon.md +13 -0
- package/zh/configure/app/html/crossorigin.md +13 -0
- package/zh/configure/app/html/disable-html-folder.md +13 -0
- package/zh/configure/app/html/favicon-by-entries.md +13 -0
- package/zh/configure/app/html/favicon.md +13 -0
- package/zh/configure/app/html/inject-by-entries.md +13 -0
- package/zh/configure/app/html/inject.md +13 -0
- package/zh/configure/app/html/meta-by-entries.md +13 -0
- package/zh/configure/app/html/meta.md +13 -0
- package/zh/configure/app/html/mount-id.md +13 -0
- package/zh/configure/app/html/template-by-entries.md +13 -0
- package/zh/configure/app/html/template-parameters-by-entries.md +13 -0
- package/zh/configure/app/html/template-parameters.md +13 -0
- package/zh/configure/app/html/template.md +13 -0
- package/zh/configure/app/html/title-by-entries.md +13 -0
- package/zh/configure/app/html/title.md +13 -0
- package/zh/configure/app/output/_category_.json +4 -0
- package/zh/configure/app/output/asset-prefix.md +13 -0
- package/zh/configure/app/output/assets-retry.md +13 -0
- package/zh/configure/app/output/charset.md +13 -0
- package/zh/configure/app/output/clean-dist-path.md +13 -0
- package/zh/configure/app/output/convert-to-rem.md +13 -0
- package/zh/configure/app/output/copy.md +13 -0
- package/zh/configure/app/output/css-module-local-ident-name.md +13 -0
- package/zh/configure/app/output/data-uri-limit.md +13 -0
- package/zh/configure/app/output/disable-css-module-extension.md +13 -0
- package/zh/configure/app/output/disable-filename-hash.md +13 -0
- package/zh/configure/app/output/disable-inline-runtime-chunk.md +13 -0
- package/zh/configure/app/output/disable-minimize.md +13 -0
- package/zh/configure/app/output/disable-node-polyfill.md +24 -0
- package/zh/configure/app/output/disable-source-map.md +13 -0
- package/zh/configure/app/output/dist-path.md +13 -0
- package/zh/configure/app/output/enable-asset-fallback.md +13 -0
- package/zh/configure/app/output/enable-asset-manifest.md +13 -0
- package/zh/configure/app/output/enable-css-module-tsdeclaration.md +13 -0
- package/zh/configure/app/output/enable-inline-scripts.md +13 -0
- package/zh/configure/app/output/enable-inline-styles.md +13 -0
- package/zh/configure/app/output/enable-latest-decorators.md +13 -0
- package/zh/configure/app/output/enable-modern-mode.md +26 -0
- package/zh/configure/app/output/externals.md +13 -0
- package/zh/configure/app/output/filename.md +13 -0
- package/zh/configure/app/output/legal-comments.md +13 -0
- package/zh/configure/app/output/override-browserslist.md +13 -0
- package/zh/configure/app/output/polyfill.md +13 -0
- package/zh/configure/app/output/ssg.md +226 -0
- package/zh/configure/app/output/svg-default-export.md +13 -0
- package/zh/configure/app/performance/build-cache.md +13 -0
- package/zh/configure/app/performance/bundle-analyze.md +13 -0
- package/zh/configure/app/performance/chunk-split.md +13 -0
- package/zh/configure/app/performance/print-file-size.md +13 -0
- package/zh/configure/app/performance/profile.md +13 -0
- package/zh/configure/app/performance/remove-console.md +13 -0
- package/zh/configure/app/performance/remove-moment-locale.md +13 -0
- package/zh/configure/app/plugins.md +74 -0
- package/zh/configure/app/runtime/_category_.json +4 -0
- package/zh/configure/app/runtime/master-app.md +72 -0
- package/zh/configure/app/runtime/router.md +54 -0
- package/zh/configure/app/runtime/state.md +45 -0
- package/zh/configure/app/security/sri.md +13 -0
- package/zh/configure/app/server/_category_.json +4 -0
- package/zh/configure/app/server/base-url.md +36 -0
- package/zh/configure/app/server/port.md +21 -0
- package/zh/configure/app/server/public-routes.md +29 -0
- package/zh/configure/app/server/routes.md +92 -0
- package/zh/configure/app/server/ssr-by-entries.md +32 -0
- package/zh/configure/app/server/ssr.md +24 -0
- package/zh/configure/app/source/_category_.json +4 -0
- package/zh/configure/app/source/alias.md +13 -0
- package/zh/configure/app/source/compile-js-data-uri.md +13 -0
- package/zh/configure/app/source/config-dir.md +15 -0
- package/zh/configure/app/source/define.md +13 -0
- package/zh/configure/app/source/design-system.md +1156 -0
- package/zh/configure/app/source/disable-default-entries.md +23 -0
- package/zh/configure/app/source/enable-async-entry.md +53 -0
- package/zh/configure/app/source/entries-dir.md +42 -0
- package/zh/configure/app/source/entries.md +55 -0
- package/zh/configure/app/source/global-vars.md +13 -0
- package/zh/configure/app/source/include.md +13 -0
- package/zh/configure/app/source/module-scopes.md +13 -0
- package/zh/configure/app/source/pre-entry.md +13 -0
- package/zh/configure/app/source/resolve-extension-prefix.md +13 -0
- package/zh/configure/app/source/resolve-main-fields.md +13 -0
- package/zh/configure/app/testing/_category_.json +4 -0
- package/zh/configure/app/testing/transformer.md +17 -0
- package/zh/configure/app/tools/_category_.json +4 -0
- package/zh/configure/app/tools/autoprefixer.md +13 -0
- package/zh/configure/app/tools/babel.md +13 -0
- package/zh/configure/app/tools/css-extract.md +13 -0
- package/zh/configure/app/tools/css-loader.md +13 -0
- package/zh/configure/app/tools/dev-server.md +13 -0
- package/zh/configure/app/tools/esbuild.md +61 -0
- package/zh/configure/app/tools/html-plugin.md +13 -0
- package/zh/configure/app/tools/inspector.md +13 -0
- package/zh/configure/app/tools/jest.md +41 -0
- package/zh/configure/app/tools/less.md +13 -0
- package/zh/configure/app/tools/minify-css.md +13 -0
- package/zh/configure/app/tools/postcss.md +13 -0
- package/zh/configure/app/tools/pug.md +13 -0
- package/zh/configure/app/tools/sass.md +13 -0
- package/zh/configure/app/tools/style-loader.md +13 -0
- package/zh/configure/app/tools/styled-components.md +13 -0
- package/zh/configure/app/tools/tailwindcss.md +48 -0
- package/zh/configure/app/tools/terser.md +13 -0
- package/zh/configure/app/tools/ts-checker.md +13 -0
- package/zh/configure/app/tools/ts-loader.md +13 -0
- package/zh/configure/app/tools/webpack-chain.md +13 -0
- package/zh/configure/app/tools/webpack.md +13 -0
- package/zh/configure/app/usage.md +81 -0
- package/zh/configure/generator/introduce.md +113 -0
- package/zh/configure/generator/module.md +43 -0
- package/zh/configure/generator/monorepo.md +28 -0
- package/zh/configure/generator/mwa.md +127 -0
- package/zh/guides/advanced-features/_category_.json +9 -0
- package/zh/guides/advanced-features/bff/_category_.json +4 -0
- package/zh/guides/advanced-features/bff/bff-proxy.md +25 -0
- package/zh/guides/advanced-features/bff/bff-server.md +142 -0
- package/zh/guides/advanced-features/bff/frameworks.md +348 -0
- package/zh/guides/advanced-features/bff/function.md +236 -0
- package/zh/guides/advanced-features/code-split.md +68 -0
- package/zh/guides/advanced-features/compatibility.md +89 -0
- package/zh/guides/advanced-features/custom-app.md +4 -0
- package/zh/guides/advanced-features/eslint.md +146 -0
- package/zh/guides/advanced-features/index.md +12 -0
- package/zh/guides/advanced-features/low-level.md +44 -0
- package/zh/guides/advanced-features/ssg.md +151 -0
- package/zh/guides/advanced-features/ssr.md +186 -0
- package/zh/guides/advanced-features/testing.md +4 -0
- package/zh/guides/advanced-features/typescript.md +4 -0
- package/zh/guides/advanced-features/web-server.md +135 -0
- package/zh/guides/basic-features/_category_.json +9 -0
- package/zh/guides/basic-features/alias.md +67 -0
- package/zh/guides/basic-features/css/_category_.json +4 -0
- package/zh/guides/basic-features/css/css-in-js.md +38 -0
- package/zh/guides/basic-features/css/css-modules.md +86 -0
- package/zh/guides/basic-features/css/less-sass.md +29 -0
- package/zh/guides/basic-features/css/postcss.md +81 -0
- package/zh/guides/basic-features/css/tailwindcss.md +98 -0
- package/zh/guides/basic-features/data-fetch.md +4 -0
- package/zh/guides/basic-features/env-vars.md +83 -0
- package/zh/guides/basic-features/html.md +128 -0
- package/zh/guides/basic-features/image.md +43 -0
- package/zh/guides/basic-features/index.md +12 -0
- package/zh/guides/basic-features/mock.md +85 -0
- package/zh/guides/basic-features/proxy.md +85 -0
- package/zh/guides/basic-features/routes.md +4 -0
- package/zh/guides/concept/_category_.json +5 -0
- package/zh/guides/concept/entries.md +4 -0
- package/zh/guides/concept/integrated.md +4 -0
- package/zh/guides/concept/lifecycle.md +4 -0
- package/zh/guides/concept/solutions.md +4 -0
- package/zh/guides/get-started/_category_.json +5 -0
- package/zh/guides/get-started/quick-start.md +4 -0
- package/zh/guides/get-started/upgrade.md +4 -0
- package/zh/guides/overview.md +11 -0
- package/zh/guides/topic-detail/_category_.json +5 -0
- package/zh/guides/topic-detail/changesets/_category_.json +4 -0
- package/zh/guides/topic-detail/changesets/add.md +125 -0
- package/zh/guides/topic-detail/changesets/changelog.md +239 -0
- package/zh/guides/topic-detail/changesets/commit.md +272 -0
- package/zh/guides/topic-detail/changesets/config.md +146 -0
- package/zh/guides/topic-detail/changesets/github.md +168 -0
- package/zh/guides/topic-detail/changesets/introduce.md +57 -0
- package/zh/guides/topic-detail/changesets/release-note.md +262 -0
- package/zh/guides/topic-detail/changesets/release-pre.md +49 -0
- package/zh/guides/topic-detail/changesets/release.md +228 -0
- package/zh/guides/topic-detail/compile-speed.md +182 -0
- package/zh/guides/topic-detail/framework-plugin/_category_.json +4 -0
- package/zh/guides/topic-detail/framework-plugin/abstract.md +27 -0
- package/zh/guides/topic-detail/framework-plugin/extend.md +163 -0
- package/zh/guides/topic-detail/framework-plugin/implement.md +188 -0
- package/zh/guides/topic-detail/framework-plugin/relationship.md +119 -0
- package/zh/guides/topic-detail/generator-plugin/_category_.json +4 -0
- package/zh/guides/topic-detail/generator-plugin/abstract.md +23 -0
- package/zh/guides/topic-detail/generator-plugin/develop.md +120 -0
- package/zh/guides/topic-detail/generator-plugin/use.md +61 -0
- package/zh/guides/topic-detail/micro-frontend/_category_.json +4 -0
- package/zh/guides/topic-detail/micro-frontend/communicate.md +39 -0
- package/zh/guides/topic-detail/micro-frontend/debugging.md +168 -0
- package/zh/guides/topic-detail/micro-frontend/introduction.md +13 -0
- package/zh/guides/topic-detail/micro-frontend/mixed-stack.md +24 -0
- package/zh/guides/topic-detail/micro-frontend/route-mode.md +110 -0
- package/zh/guides/topic-detail/model/_category_.json +4 -0
- package/zh/guides/topic-detail/model/auto-actions.md +90 -0
- package/zh/guides/topic-detail/model/computed-state.md +151 -0
- package/zh/guides/topic-detail/model/define-model.md +66 -0
- package/zh/guides/topic-detail/model/faq.md +43 -0
- package/zh/guides/topic-detail/model/manage-effects.md +259 -0
- package/zh/guides/topic-detail/model/model-communicate.md +219 -0
- package/zh/guides/topic-detail/model/performance.md +173 -0
- package/zh/guides/topic-detail/model/quick-start.md +112 -0
- package/zh/guides/topic-detail/model/redux-integration.md +21 -0
- package/zh/guides/topic-detail/model/test-model.md +43 -0
- package/zh/guides/topic-detail/model/typescript-best-practice.md +71 -0
- package/zh/guides/topic-detail/model/use-model.md +244 -0
- package/zh/guides/topic-detail/model/use-out-of-modernjs.md +51 -0
- package/zh/guides/topic-detail/monorepo/_category_.json +4 -0
- package/zh/guides/topic-detail/monorepo/create-sub-project.md +64 -0
- package/zh/guides/topic-detail/monorepo/deploy.md +43 -0
- package/zh/guides/topic-detail/monorepo/intro.md +15 -0
- package/zh/guides/topic-detail/monorepo/publish.md +68 -0
- package/zh/guides/topic-detail/monorepo/sub-project-interface.md +170 -0
- package/zh/guides/troubleshooting/_category_.json +5 -0
- package/zh/guides/troubleshooting/compile.md +379 -0
- package/zh/guides/troubleshooting/dependencies.md +168 -0
- package/zh/tutorials/first-app/_category_.json +5 -0
- package/zh/tutorials/first-app/c01-getting-started/1.1-prerequisites.md +25 -0
- package/zh/tutorials/first-app/c01-getting-started/1.2-minimal-mwa.md +118 -0
- package/zh/tutorials/first-app/c01-getting-started/1.3-dev-command.md +29 -0
- package/zh/tutorials/first-app/c01-getting-started/1.4-enable-ssr.md +44 -0
- package/zh/tutorials/first-app/c01-getting-started/1.5-start-command.md +18 -0
- package/zh/tutorials/first-app/c01-getting-started/1.6-create-repo.md +31 -0
- package/zh/tutorials/first-app/c01-getting-started/_category_.json +3 -0
- package/zh/tutorials/first-app/c02-generator-and-studio/2.1-generator.md +87 -0
- package/zh/tutorials/first-app/c02-generator-and-studio/2.2-boilerplates.md +28 -0
- package/zh/tutorials/first-app/c02-generator-and-studio/2.3-configuration.md +21 -0
- package/zh/tutorials/first-app/c02-generator-and-studio/_category_.json +3 -0
- package/zh/tutorials/first-app/c03-ide/3.1-setting-up.md +55 -0
- package/zh/tutorials/first-app/c03-ide/3.2-hints-in-ide.md +66 -0
- package/zh/tutorials/first-app/c03-ide/3.3-autofix-in-ide.md +11 -0
- package/zh/tutorials/first-app/c03-ide/3.4-autofix-in-cli.md +63 -0
- package/zh/tutorials/first-app/c03-ide/_category_.json +3 -0
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.1-use-es6-plus.md +67 -0
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.2-use-typescript.md +111 -0
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.3-compatibility.md +67 -0
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/_category_.json +3 -0
- package/zh/tutorials/first-app/c05-component/5.1-use-ui-library.md +68 -0
- package/zh/tutorials/first-app/c05-component/5.2-use-standalone-component.md +92 -0
- package/zh/tutorials/first-app/c05-component/_category_.json +3 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.1-css-in-js.md +110 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.2-utility-class.md +148 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.3-postcss.md +84 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.4-design-system.md +83 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.5-storybook.md +77 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.6-testing.md +113 -0
- package/zh/tutorials/first-app/c06-css-and-component/_category_.json +3 -0
- package/zh/tutorials/first-app/c07-app-entry/7.1-intro.md +64 -0
- package/zh/tutorials/first-app/c07-app-entry/7.2-add-entry-in-cli.md +104 -0
- package/zh/tutorials/first-app/c07-app-entry/7.3-manage-entries-by-hand.md +74 -0
- package/zh/tutorials/first-app/c07-app-entry/_category_.json +3 -0
- package/zh/tutorials/first-app/c08-client-side-routing/8.1-code-based-routing.md +153 -0
- package/zh/tutorials/first-app/c08-client-side-routing/8.2-file-based-routing.md +318 -0
- package/zh/tutorials/first-app/c08-client-side-routing/_category_.json +3 -0
- package/zh/tutorials/first-app/c09-bff/9.1-serverless.md +30 -0
- package/zh/tutorials/first-app/c09-bff/9.2-enable-bff.md +93 -0
- package/zh/tutorials/first-app/c09-bff/9.3-fetch-bff.md +205 -0
- package/zh/tutorials/first-app/c09-bff/_category_.json +3 -0
- package/zh/tutorials/first-app/c10-model/10.1-application-architecture.md +23 -0
- package/zh/tutorials/first-app/c10-model/10.2-add-model.md +185 -0
- package/zh/tutorials/first-app/c10-model/10.3-use-model.md +54 -0
- package/zh/tutorials/first-app/c10-model/10.4-testing.md +69 -0
- package/zh/tutorials/first-app/c10-model/_category_.json +3 -0
- package/zh/tutorials/first-app/c11-container/11.1-use-model-with-app-state.md +274 -0
- package/zh/tutorials/first-app/c11-container/11.2-add-container.md +106 -0
- package/zh/tutorials/first-app/c11-container/11.3-use-loader.md +61 -0
- package/zh/tutorials/first-app/c11-container/11.4-testing.md +56 -0
- package/zh/tutorials/first-app/c11-container/_category_.json +3 -0
- package/zh/tutorials/first-app/overview.md +11 -0
- package/zh/tutorials/foundations/_category_.json +5 -0
- package/zh/tutorials/foundations/basic.md +8 -0
- package/zh/tutorials/foundations/introduction.md +41 -0
@@ -0,0 +1,228 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 3
|
3
|
+
---
|
4
|
+
|
5
|
+
# 发布正式版本
|
6
|
+
|
7
|
+
发版正式版本时,我们需要根据开发过程中生成的 changeset 进行相关包版本号升级,并执行 publish 命令发布到 NPM 上。
|
8
|
+
|
9
|
+
## 步骤
|
10
|
+
|
11
|
+
:::info
|
12
|
+
以下示例命令都以 pnpm 作为包管理工具进行,如果需要使用其他包管理工具,请按需求进行替换。
|
13
|
+
:::
|
14
|
+
|
15
|
+
### 模块工程方案
|
16
|
+
|
17
|
+
#### 在根目录执行以下命令:
|
18
|
+
|
19
|
+
```bash
|
20
|
+
pnpm run bump
|
21
|
+
```
|
22
|
+
|
23
|
+

|
24
|
+
|
25
|
+
执行该命令时,changeset 会自动进行以下操作:
|
26
|
+
|
27
|
+
- 删除 `.changesets` 目录下的所有 changeset 文件。
|
28
|
+
|
29
|
+
- 根据 changeset 信息升级该包版本号。
|
30
|
+
|
31
|
+
- 在根目录的 `CHANGELOG.md` 文件中写入 Changelog 信息,文件不存在时会自动创建。
|
32
|
+
|
33
|
+
#### 确认并提交当前变更:
|
34
|
+
|
35
|
+
```bash
|
36
|
+
git add .
|
37
|
+
git commit -m "release: bump package"
|
38
|
+
```
|
39
|
+
|
40
|
+
#### 在根目录执行以下命令发布包至 NPM:
|
41
|
+
|
42
|
+
```bash
|
43
|
+
pnpm run release
|
44
|
+
```
|
45
|
+
|
46
|
+

|
47
|
+
|
48
|
+
#### push 对应的 tag 信息至远程仓库:
|
49
|
+
|
50
|
+
```bash
|
51
|
+
git push --follow-tags
|
52
|
+
```
|
53
|
+
|
54
|
+
### Monorepo 工程方案
|
55
|
+
|
56
|
+
#### 在根目录执行以下命令:
|
57
|
+
|
58
|
+
```bash
|
59
|
+
pnpm run bump
|
60
|
+
```
|
61
|
+
|
62
|
+

|
63
|
+
|
64
|
+
执行该命令时,changeset 会自动进行以下操作:
|
65
|
+
|
66
|
+
- 删除 `.changesets` 目录下的所有 changeset 文件。
|
67
|
+
|
68
|
+
- 根据 changeset 信息升级相关包的版本号,除了显示写入 changeset 的包,执行命令时还会将 Monorepo 中所有的包进行依赖关系分析,如果需要升级,也会对应的自动升级版本号。
|
69
|
+
|
70
|
+
- 在需要升级的包目录的 `CHANGELOG.md` 文件中写入 Changelog 信息,文件不存在时会自动创建。
|
71
|
+
|
72
|
+
#### 确认并提交当前变更:
|
73
|
+
|
74
|
+
:::info
|
75
|
+
需确认自动升级的版本号是否符合预期,如果需要了解版本升级策略,请查看[升级版本策略](/docs/guides/topic-detail/changesets/release#升级版本策略)。
|
76
|
+
:::
|
77
|
+
|
78
|
+
```bash
|
79
|
+
git add .
|
80
|
+
git commit -m "release: bump package"
|
81
|
+
```
|
82
|
+
|
83
|
+
#### 在根目录执行以下命令发布包至 NPM:
|
84
|
+
|
85
|
+
```bash
|
86
|
+
pnpm run release
|
87
|
+
```
|
88
|
+
|
89
|
+
执行该命令时,将会依次判断 Monorepo 中所有的 packages 的版本是否在 NPM 中存在,如果不存在将会执行 `publish` 命令发布。
|
90
|
+
|
91
|
+
:::warning
|
92
|
+
当 Monorepo 中包之间依赖关系使用 workspace 声明时,注意不要直接在 package 对应的子目录直接执行 `npm publish` 发布 package,使用 `relesae` 命令在发布时将会自动去除 workspace 声明,确保 NPM 包发布之后可用。
|
93
|
+
:::
|
94
|
+
|
95
|
+
#### push 对应的 tag 信息至远程仓库:
|
96
|
+
|
97
|
+
```bash
|
98
|
+
git push --follow-tags
|
99
|
+
```
|
100
|
+
|
101
|
+
## 参数
|
102
|
+
|
103
|
+
### bump 命令参数
|
104
|
+
|
105
|
+
- `--snapshot` 生成基于时间戳的版本号。
|
106
|
+
|
107
|
+
```bash
|
108
|
+
pnpm run bump -- --snapshot canary
|
109
|
+
```
|
110
|
+
|
111
|
+
执行完成后,对应的升级版本号将会变成 `0.0.0-canary-20220622092823` 的形式,其中 canary 为 snapshot 配置的标记,如果不配置,将直接生成 `0.0.0-20220622092823` 的形式。
|
112
|
+
|
113
|
+
该参数主要用于发布临时测试版本进行测试,不需要进行代码提交。
|
114
|
+
|
115
|
+
- `--ignore` 发布时手动忽略部分包。
|
116
|
+
|
117
|
+
例如本次发布你需要忽略 `module-2` 包:
|
118
|
+
|
119
|
+
```bash
|
120
|
+
pnpm run bump -- --ignore module-2
|
121
|
+
```
|
122
|
+
|
123
|
+
命令执行完成后,将会忽略 `module-2` 包的更新。注意如果存在包依赖 `module-2`,需要将对应包也加入到 `ignore` 参数中,否则 `bump` 命令将执行失败。
|
124
|
+
|
125
|
+
加入多个包的使用姿势为:
|
126
|
+
|
127
|
+
```bash
|
128
|
+
pnpm run bump -- --ignore module-2 --ignore module-3
|
129
|
+
```
|
130
|
+
|
131
|
+
### release 命令参数
|
132
|
+
|
133
|
+
- `--otp` 使用 `npm token` 执行 relesae 命令发布对应包
|
134
|
+
|
135
|
+
```bash
|
136
|
+
pnpm run relese -- --otp <token>
|
137
|
+
```
|
138
|
+
|
139
|
+
- `--tag` 本地发布使用特定的 tag,默认使用 `latest`
|
140
|
+
|
141
|
+
```bash
|
142
|
+
pnpm run release -- --tag <tag>
|
143
|
+
```
|
144
|
+
|
145
|
+
- `--ignore-scripts` 发布时忽略 npm scripts。
|
146
|
+
|
147
|
+
执行 `publish` 命令时,npm 会自动触发很多命令,比如 `prepare`、`prepublish`,使用该参数可以忽略这些命令执行。该参数仅支持在使用 pnpm 的 Monorepo 中使用。
|
148
|
+
|
149
|
+
```bash
|
150
|
+
pnpm run release -- --ignore-scripts
|
151
|
+
```
|
152
|
+
|
153
|
+
- `--no-git-checks` 发布时忽略检查当前分支。
|
154
|
+
|
155
|
+
执行发布命令时,默认会自动检查当前分支是否为发布分支,是否存在未提交变更等等,使用该参数可以忽略 git 相关检查。
|
156
|
+
|
157
|
+
```bash
|
158
|
+
pnpm run release -- --no-git-checks
|
159
|
+
```
|
160
|
+
|
161
|
+
## 升级版本策略
|
162
|
+
|
163
|
+
### dependencies 或者 devDependencies 依赖
|
164
|
+
|
165
|
+
#### patch 版本依赖只升级自身
|
166
|
+
|
167
|
+
例如存在如下场景:
|
168
|
+
|
169
|
+
Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `dependencies` 中存在 `module-1`。
|
170
|
+
|
171
|
+
当前存在的 changeset 为 `module-1` 的 `patch` 版本升级。
|
172
|
+
|
173
|
+
执行 bump 命令后将只会升级 `module-1` 的 patch 版本号。
|
174
|
+
|
175
|
+
#### major / minor 版本自身升级 major 或者 minor 版本号,依赖包升级 patch 版本号
|
176
|
+
|
177
|
+
例如存在如下场景:
|
178
|
+
|
179
|
+
Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 dependencies 中存在`module-1`。
|
180
|
+
|
181
|
+
当前存在的 changeset 为 `module-1` 的 minor 版本升级。
|
182
|
+
|
183
|
+
执行 bump 命令后 `module-1` 会升级 `minor` 版本号,`module -2` 会升级 `patch` 版本号。
|
184
|
+
|
185
|
+
### peerDependencies 依赖
|
186
|
+
|
187
|
+
#### patch 版本依赖自身和依赖包都升级 patch 版本号
|
188
|
+
|
189
|
+
例如存在如下场景:
|
190
|
+
|
191
|
+
Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDependencies` 中存在 `module-1`。
|
192
|
+
|
193
|
+
当前存在的 changeset 为 `module-1` 的 patch 版本升级。
|
194
|
+
|
195
|
+
执行 bump 命令后将 `module-1` 和 `module-2` 都升级 patch 版本号。
|
196
|
+
|
197
|
+
#### major / minor 版本自身升级 major 或者 minor 版本号,依赖包升级 major 版本号
|
198
|
+
|
199
|
+
例如存在如下场景:
|
200
|
+
|
201
|
+
Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDependencies` 中存在 `module-1`。
|
202
|
+
|
203
|
+
当前存在的 changeset 为 `module-1` 的 `minor` 版本升级。
|
204
|
+
|
205
|
+
执行 bump 命令后将 module-1 将升级 `minor` 版本号, `module-2` 升级 `major` 版本号。
|
206
|
+
|
207
|
+
#### 修改 peerDependencies 的升级策略
|
208
|
+
|
209
|
+
`peerDependencies` 的升级策略支持通过配置 `onlyUpdatePeerDependentsWhenOutOfRange` 来修改依赖升级策略,当只有超出声明的版本类型范围时,才对应升级 `peerDependencies`。
|
210
|
+
|
211
|
+
```json
|
212
|
+
{
|
213
|
+
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
|
214
|
+
"onlyUpdatePeerDependentsWhenOutOfRange": true
|
215
|
+
},
|
216
|
+
...
|
217
|
+
}
|
218
|
+
```
|
219
|
+
|
220
|
+
例如存在如下场景:
|
221
|
+
|
222
|
+
Monorepo 中存在两个包,`module-1` 和 `module-2`,`module-2` 的 `peerDependencies` 中存在 `module-1`,声明 `module-1` 的版本号使用 `^`。
|
223
|
+
|
224
|
+
当前存在的 changeset 为 `module-1` 的 `patch` 或者 `minor` 版本升级。
|
225
|
+
|
226
|
+
执行 `bump` 命令后只升级 `module-1` 版本号。
|
227
|
+
|
228
|
+
需注意,如果包版本号在 `0.x.x` 的范围时,`minor` 版本号升级也是超出声明的版本类型范围的。
|
@@ -0,0 +1,182 @@
|
|
1
|
+
---
|
2
|
+
title: 提升编译速度
|
3
|
+
sidebar_position: 9
|
4
|
+
---
|
5
|
+
|
6
|
+
Modern.js 默认内置了一系列的编译性能优化策略,但是随着业务场景变复杂、仓库的代码量增大,在使用过程中可能会遇到一些编译性能的问题。
|
7
|
+
|
8
|
+
本文档提供了一些可选的提速策略,**开发者可以根据实际场景选取其中的部分策略**,从而进一步提升编译速度。
|
9
|
+
|
10
|
+
## 通用优化策略
|
11
|
+
|
12
|
+
以下是一些通用的优化策略,对 `modern dev` 和 `modern build` 均有提速效果,其中部分策略对包体积也有优化。
|
13
|
+
|
14
|
+
### 减少重复依赖
|
15
|
+
|
16
|
+
在实际项目中,会存在某些第三方依赖被安装了多个版本的现象。重复依赖会导致包体积变大、编译速度变慢。
|
17
|
+
|
18
|
+
我们可以通过社区中的一些工具来自动消除重复依赖,比如 [yarn-deduplicate](https://github.com/scinos/yarn-deduplicate)。
|
19
|
+
|
20
|
+
```bash
|
21
|
+
npx yarn-deduplicate && yarn
|
22
|
+
```
|
23
|
+
|
24
|
+
如果你在使用 `pnpm`,可以考虑通过**重新生成 lock 文件**来减少重复依赖,
|
25
|
+
|
26
|
+
```bash
|
27
|
+
rm -rf ./node_modules pnpm-lock.yaml && pnpm install
|
28
|
+
```
|
29
|
+
|
30
|
+
:::info
|
31
|
+
删除 lock 文件会使项目中的依赖版本自动升级到指定范围下的最新版,请进行充分的测试。
|
32
|
+
:::
|
33
|
+
|
34
|
+
### 替换体积较大的依赖
|
35
|
+
|
36
|
+
建议将项目中体积较大的第三方依赖替换为更轻量的库,比如将 [moment](https://momentjs.com/) 替换为 [day.js](https://day.js.org/)。
|
37
|
+
|
38
|
+
如果不清楚项目中哪些三方依赖的体积较大,可以在执行构建时添加 `--analyze` 参数:
|
39
|
+
|
40
|
+
```bash
|
41
|
+
npx modern build --analyze
|
42
|
+
```
|
43
|
+
|
44
|
+
该参数会生成一个分析构建产物体积的 HTML 文件,手动在浏览器中打开该文件,可以看到打包产物的瓦片图。区块的面积越大,说明该模块的体积越大。
|
45
|
+
|
46
|
+
<img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/aphqeh7uhohpquloj/modern-js/mwa-build-analyze-8784f762c1ab0cb20935829d5f912c4c.png" />
|
47
|
+
|
48
|
+
### 避免使用 ts-loader
|
49
|
+
|
50
|
+
默认情况下,Modern.js 使用 Babel 编译 TS 文件,开启 `output.enableTsLoader` 选项后,会使用 `ts-loader` 编译 TS 文件。
|
51
|
+
|
52
|
+
由于 `ts-loader` 需要进行额外的语法解析和类型检查,因此会导致项目编译速度变慢,请避免使用。
|
53
|
+
|
54
|
+
```js title="modern.config.js"
|
55
|
+
export default defineConfig({
|
56
|
+
output: {
|
57
|
+
// 移除这项配置
|
58
|
+
enableTsLoader: true,
|
59
|
+
},
|
60
|
+
});
|
61
|
+
```
|
62
|
+
|
63
|
+
详见 [tools.tsLoader 文档](/docs/configure/app/tools/ts-loader)。
|
64
|
+
|
65
|
+
### 提升 Browserslist 范围
|
66
|
+
|
67
|
+
**减少 Polyfill 的代码量可以提升编译速度。**Modern.js 会根据项目的 Browserslist 配置范围进行代码编译,并注入相应的 Polyfill。如果项目对兼容性的要求较低,可以根据实际情况,提升 Browserslist 范围,从而减少 Polyfill 的代码量。
|
68
|
+
|
69
|
+
默认的 Browserslist 配置为:
|
70
|
+
|
71
|
+
```js
|
72
|
+
['> 0.01%', 'not dead', 'not op_mini all'];
|
73
|
+
```
|
74
|
+
|
75
|
+
比如只兼容 Chrome 53 以上的浏览器,可以改成:
|
76
|
+
|
77
|
+
```js
|
78
|
+
['Chrome >= 53'];
|
79
|
+
```
|
80
|
+
|
81
|
+
详见 [客户端兼容性 - Browserslist 配置](/docs/guides/advanced-features/compatibility#browserslist-配置)。
|
82
|
+
|
83
|
+
### 按需引入 Polyfill
|
84
|
+
|
85
|
+
明确第三方依赖不需要 Polyfill 的情况下,可以将 `output.polyfill` 设置为 `usage`,根据代码中使用到的语法,按需注入所需的 Polyfill 代码,从而减少 Polyfill 的代码量。
|
86
|
+
|
87
|
+
```js title="modern.config.js"
|
88
|
+
export default defineConfig({
|
89
|
+
output: {
|
90
|
+
polyfill: 'usage',
|
91
|
+
},
|
92
|
+
});
|
93
|
+
```
|
94
|
+
|
95
|
+
详见 [客户端兼容性 - Polyfill 模式](/docs/guides/advanced-features/compatibility#polyfill-模式)。
|
96
|
+
|
97
|
+
## dev 优化策略
|
98
|
+
|
99
|
+
以下是针对 `modern dev` 进行提速的策略。
|
100
|
+
|
101
|
+
### 调整开发环境 SourceMap 格式
|
102
|
+
|
103
|
+
为了提供良好的调试体验,Modern.js 在开发环境下默认使用 webpack 提供的 `cheap-module-source-map` 格式 SourceMap。
|
104
|
+
|
105
|
+
由于生成高质量的 SourceMap 需要额外的性能开销,通过调整开发环境的 SourceMap 格式,可以提升 dev 编译速度。
|
106
|
+
|
107
|
+
比如禁用 SourceMap:
|
108
|
+
|
109
|
+
```js title="modern.config.js"
|
110
|
+
export default defineConfig({
|
111
|
+
tools: {
|
112
|
+
webpackChain(chain, { env }) {
|
113
|
+
if (env === 'development') {
|
114
|
+
chain.devtool(false);
|
115
|
+
}
|
116
|
+
},
|
117
|
+
},
|
118
|
+
});
|
119
|
+
```
|
120
|
+
|
121
|
+
或是把开发环境的 SourceMap 格式设置为开销最小的 `eval` 格式:
|
122
|
+
|
123
|
+
```js title="modern.config.js"
|
124
|
+
export default defineConfig({
|
125
|
+
tools: {
|
126
|
+
webpackChain(chain, { env }) {
|
127
|
+
if (env === 'development') {
|
128
|
+
chain.devtool('eval');
|
129
|
+
}
|
130
|
+
},
|
131
|
+
},
|
132
|
+
});
|
133
|
+
```
|
134
|
+
|
135
|
+
> 关于不同 SourceMap 格式之间的详细差异,请查看 [webpack - devtool](https://webpack.js.org/configuration/devtool/)。
|
136
|
+
|
137
|
+
### 调整开发环境的 Browserslist 范围
|
138
|
+
|
139
|
+
这项优化的原理与「提升 Browserslist 范围」类似,区别在于,我们可以为开发环境和生产环境设置不同的 browserslist,使开发环境下不需要引入额外的 Polyfill 编译逻辑。
|
140
|
+
|
141
|
+
比如在 `package.json` 中添加以下配置,在开发环境下只兼容最新的浏览器,在生产环境下兼容实际需要的浏览器:
|
142
|
+
|
143
|
+
```json
|
144
|
+
{
|
145
|
+
"browserslist": {
|
146
|
+
"production": [">0.2%", "not dead", "not op_mini all"],
|
147
|
+
"development": [
|
148
|
+
"last 1 chrome version",
|
149
|
+
"last 1 firefox version",
|
150
|
+
"last 1 safari version"
|
151
|
+
]
|
152
|
+
}
|
153
|
+
}
|
154
|
+
```
|
155
|
+
|
156
|
+
注意,这项优化策略会导致 `dev` 构建的产物与 `build` 构建的产物存在一定差异。
|
157
|
+
|
158
|
+
## build 优化策略
|
159
|
+
|
160
|
+
以下是针对 `modern build` 进行提速的策略。
|
161
|
+
|
162
|
+
### 禁用生产环境 SourceMap
|
163
|
+
|
164
|
+
如果项目在生产环境下不需要 SourceMap,可以通过 `disableSourceMap` 配置项关闭,从而提升 build 构建的速度。
|
165
|
+
|
166
|
+
```js title="modern.config.js"
|
167
|
+
export default defineConfig({
|
168
|
+
output: {
|
169
|
+
disableSourceMap: true,
|
170
|
+
},
|
171
|
+
});
|
172
|
+
```
|
173
|
+
|
174
|
+
详见 [output.disableSourceMap](/docs/configure/app/output/disable-source-map)。
|
175
|
+
|
176
|
+
### 使用 esbuild 压缩
|
177
|
+
|
178
|
+
Modern.js 基于 esbuild 提供了代码编译和压缩的能力,在大型工程中开启后,**可以大幅度减少代码压缩所需的时间,同时有效避免 OOM (heap out of memory) 问题**。
|
179
|
+
|
180
|
+
使用 esbuild 压缩虽然带来了构建效率上的提升,但 esbuild 的压缩比例是低于 terser 的,因此**构建产物的体积会增大**,请根据业务情况酌情使用(比较适合中后台场景)。
|
181
|
+
|
182
|
+
详见 [tools.esbuild](/docs/configure/app/tools/esbuild)。
|
@@ -0,0 +1,27 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 1
|
3
|
+
---
|
4
|
+
|
5
|
+
# 插件可以做什么
|
6
|
+
|
7
|
+
Modern.js 内置了一套插件系统,并基于这套插件系统来管理各个运行流程,Modern.js 的所有工程方案都是通过这套插件实现的,同时也支持开发者通过编写插件来扩展更多功能,适配复杂场景。
|
8
|
+
|
9
|
+
由于 Modern.js 是基于这套插件系统实现的,因此可以说,Modern.js 中的所有能力是都对开发者开放的。包括但不限于:
|
10
|
+
|
11
|
+
- 注册命令
|
12
|
+
- 修改 Modern.js 配置、配置校验 Schema
|
13
|
+
- 修改编译时的 Webpack/Babel/Less/Sass/Tailwind CSS/... 配置
|
14
|
+
- 修改运行时需要渲染的 React 组件、Element
|
15
|
+
- 修改页面路由
|
16
|
+
- 修改服务器路由
|
17
|
+
- 自定义控制台输出
|
18
|
+
- 自定义动态 HTML 模版
|
19
|
+
- 自定义 Node.js 服务器框架
|
20
|
+
- 自定义 React 组件客户端/服务器端渲染
|
21
|
+
- ...
|
22
|
+
|
23
|
+
因此,当 Modern.js 暂时没有覆盖到你所需要的功能或场景时,可以开发一个自定义插件,来实现适配特殊场景的相关功能。
|
24
|
+
|
25
|
+
:::info 补充信息
|
26
|
+
关于 Modern.js 插件 API 的详细介绍,请参考 【[插件 API](/docs/apis/app/runtime/plugin/abstract)】。
|
27
|
+
:::
|
@@ -0,0 +1,163 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 4
|
3
|
+
---
|
4
|
+
|
5
|
+
# 扩展插件 Hook
|
6
|
+
|
7
|
+
本章节介绍如何通过动态注册 [Hook 模型](/docs/apis/app/runtime/plugin/hook#hook-模型) 的方式来扩展插件 Hook。
|
8
|
+
|
9
|
+
## 示例
|
10
|
+
|
11
|
+
这里我们用一个简单的例子演示一下。假设我们要添加一些管理控制台输出信息的 Hook。
|
12
|
+
|
13
|
+
首先我们初始化一个空的项目文件,并添加基础依赖:
|
14
|
+
|
15
|
+
```console
|
16
|
+
$ npx @modern-js/create modern-js-demo
|
17
|
+
```
|
18
|
+
|
19
|
+
### 创建 Hook
|
20
|
+
|
21
|
+
我们先创建一个 Hook 模型:
|
22
|
+
|
23
|
+
```ts title=config/plugin/MyPlugin.ts
|
24
|
+
import { createWaterfall } from '@modern-js/plugin';
|
25
|
+
|
26
|
+
const message = createWaterfall<string[]>();
|
27
|
+
```
|
28
|
+
|
29
|
+
然后注册它:
|
30
|
+
|
31
|
+
```ts title=config/plugin/MyPlugin.ts
|
32
|
+
import type { CliPlugin } from '@modern-js/core';
|
33
|
+
|
34
|
+
export default (): CliPlugin => ({
|
35
|
+
name: 'my-plugin',
|
36
|
+
|
37
|
+
registerHook: {
|
38
|
+
message,
|
39
|
+
},
|
40
|
+
});
|
41
|
+
```
|
42
|
+
|
43
|
+
添加 Hook 类型:
|
44
|
+
|
45
|
+
```ts title=config/plugin/MyPlugin.ts
|
46
|
+
declare module '@modern-js/core' {
|
47
|
+
export interface Hooks {
|
48
|
+
message: typeof message;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
```
|
52
|
+
|
53
|
+
### 使用 Hook
|
54
|
+
|
55
|
+
创建插件,通过 `commands` Hook 函数,添加命令处理逻辑:
|
56
|
+
|
57
|
+
```ts title=config/plugin/MyPlugin.ts
|
58
|
+
import type { CliPlugin } from '@modern-js/core';
|
59
|
+
|
60
|
+
export default (): CliPlugin => ({
|
61
|
+
name: 'my-plugin',
|
62
|
+
|
63
|
+
setup(api) {
|
64
|
+
return {
|
65
|
+
commands({ program }) {
|
66
|
+
program.command('message').action(async () => {
|
67
|
+
const hookRunners = api.useHookRunners();
|
68
|
+
const messages = hookRunners.message([]);
|
69
|
+
console.log(messages.join('\n'));
|
70
|
+
});
|
71
|
+
},
|
72
|
+
};
|
73
|
+
},
|
74
|
+
});
|
75
|
+
```
|
76
|
+
|
77
|
+
最后 `config/plugin/MyPlugin.ts` 的状态是:
|
78
|
+
|
79
|
+
```ts title=config/plugin/MyPlugin.ts
|
80
|
+
import { createWaterfall } from '@modern-js/plugin';
|
81
|
+
import type { CliPlugin } from '@modern-js/core';
|
82
|
+
|
83
|
+
const message = createWaterfall<string[]>();
|
84
|
+
|
85
|
+
export default (): CliPlugin => ({
|
86
|
+
name: 'my-plugin',
|
87
|
+
|
88
|
+
registerHook: {
|
89
|
+
message,
|
90
|
+
},
|
91
|
+
|
92
|
+
setup(api) {
|
93
|
+
return {
|
94
|
+
commands({ program }) {
|
95
|
+
program.command('message').action(async () => {
|
96
|
+
const hookRunners = api.useHookRunners();
|
97
|
+
const messages = hookRunners.message([]);
|
98
|
+
console.log(messages.join('\n'));
|
99
|
+
});
|
100
|
+
},
|
101
|
+
};
|
102
|
+
},
|
103
|
+
});
|
104
|
+
|
105
|
+
declare module '@modern-js/core' {
|
106
|
+
export interface Hooks {
|
107
|
+
message: typeof message;
|
108
|
+
}
|
109
|
+
}
|
110
|
+
```
|
111
|
+
|
112
|
+
然后在 `modern.config.ts` 中添加这个插件:
|
113
|
+
|
114
|
+
```ts title="modern.config.ts"
|
115
|
+
import { defineConfig } from '@modern-js/app-tools';
|
116
|
+
import MyPlugin from './config/plugin/MyPlugin';
|
117
|
+
|
118
|
+
export default defineConfig({
|
119
|
+
plugins: [MyPlugin()],
|
120
|
+
});
|
121
|
+
```
|
122
|
+
|
123
|
+
这时运行 `npx modern message` 就会执行相关逻辑,但由于没有收集到任何信息,所以控制台输出为空。
|
124
|
+
|
125
|
+
那这里我们添加一个:
|
126
|
+
|
127
|
+
```ts title=config/plugin/OtherPlugin.ts
|
128
|
+
import type { CliPlugin } from '@modern-js/core';
|
129
|
+
|
130
|
+
export default (): CliPlugin => ({
|
131
|
+
name: 'my-plugin',
|
132
|
+
|
133
|
+
setup(api) {
|
134
|
+
return {
|
135
|
+
message(list) {
|
136
|
+
return [...list, '[foo] line 0', '[foo] line 1'];
|
137
|
+
},
|
138
|
+
};
|
139
|
+
},
|
140
|
+
});
|
141
|
+
```
|
142
|
+
|
143
|
+
将它添加到配置中:
|
144
|
+
|
145
|
+
```ts title="modern.config.ts"
|
146
|
+
import { defineConfig } from '@modern-js/app-tools';
|
147
|
+
import MyPlugin from './config/plugin/MyPlugin';
|
148
|
+
import OtherPlugin from './config/plugin/OtherPlugin';
|
149
|
+
|
150
|
+
export default defineConfig({
|
151
|
+
plugins: [MyPlugin(), OtherPlugin()],
|
152
|
+
});
|
153
|
+
```
|
154
|
+
|
155
|
+
这时运行 `npx modern message` 就可以在控制台看到信息了:
|
156
|
+
|
157
|
+
```console
|
158
|
+
$ modern message
|
159
|
+
[foo] line 0
|
160
|
+
[foo] line 1
|
161
|
+
```
|
162
|
+
|
163
|
+
以上面这种方式就可以扩展出拥有各种能力的插件 Hook。
|