@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,68 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 4
|
3
|
+
---
|
4
|
+
|
5
|
+
# 可复用模块的发布
|
6
|
+
|
7
|
+
在 Monorepo 中有时会需要把多个模块项目发布到 [NPM](https://www.npmjs.com/) 上,本章将要介绍如果在 Monorepo 中对子项目进行版本更新以及发布。
|
8
|
+
|
9
|
+
## 准备工作
|
10
|
+
|
11
|
+
接着 [子项目联调](/docs/guides/topic-detail/monorepo/sub-project-interface) 章节的例子,我们对 `components` 模块进行发布。
|
12
|
+
|
13
|
+
## 生成变更记录
|
14
|
+
|
15
|
+
在开发阶段,当某个模块的功能开完完成之后,一般需要提交代码(例如提交到 [GitHub](https://github.com/) 上)并需要记录本次修改的内容。在 Modern.js 的 Monorepo 工程中,我们可以在 monorepo 根目录执行命令:
|
16
|
+
|
17
|
+
```
|
18
|
+
pnpm run change
|
19
|
+
```
|
20
|
+
|
21
|
+
然后根据提示选择变更或者将要发布的包以及选择包升级的版本,并填写变更信息。变更信息的内容可以包含此次开发的功能、修复的问题等。
|
22
|
+
|
23
|
+
那么对于上面的例子,我们选择变更的项目为 `components`,并填写此次变更的内容:
|
24
|
+
|
25
|
+
```
|
26
|
+
$ modern change
|
27
|
+
🦋 Which packages would you like to include? · components
|
28
|
+
🦋 Which packages should have a major bump? · No items were selected
|
29
|
+
🦋 Which packages should have a minor bump? · components
|
30
|
+
🦋 Please enter a summary for this change (this will be in the changelogs). Submit empty line to open external editor
|
31
|
+
🦋 Summary · add features
|
32
|
+
🦋 === Releasing the following packages ===
|
33
|
+
🦋 [Minor]
|
34
|
+
🦋 components
|
35
|
+
🦋 ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
36
|
+
🦋 ║ ========= NOTE ======== ║
|
37
|
+
🦋 ║All dependents of these packages that will be incompatible with the new version will be patch bumped when this changeset is applied.║
|
38
|
+
🦋 ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
|
39
|
+
🦋 Is this your desired changeset? (Y/n) · true
|
40
|
+
🦋 Changeset added! - you can now commit it
|
41
|
+
🦋
|
42
|
+
🦋 If you want to modify or expand on the changeset summary, you can find it here
|
43
|
+
🦋 info /Users/demo/modern-js/official/monorepo-pnpm/.changeset/silent-tigers-run.md
|
44
|
+
```
|
45
|
+
|
46
|
+
该命令完成后,在 `.changeset` 中会有新的 `silent-tigers-run.md` 文件生成,其中包含了刚刚填写的信息,这些新生成的文件将用于后面发布流程中使用。**因此在提交代码的时候,需要将`.changeset` 目录下的文件一并提交**。
|
47
|
+
|
48
|
+
## 版本更新
|
49
|
+
|
50
|
+
在模块发布之前,还需要将模块的版本进行更新。。在 Modern.js 的 Monorepo 工程中,可以在 Monorepo 项目根目录下执行:
|
51
|
+
|
52
|
+
```
|
53
|
+
pnpm run bump
|
54
|
+
```
|
55
|
+
|
56
|
+
该命令会根据之前生成在 `.changeset` 目录下的文件自动更新对应模块的版本号和 CHANGELOG 信息,执行成功后会看到:
|
57
|
+
|
58
|
+
```
|
59
|
+
🦋 All files have been updated. Review them and commit at your leisure
|
60
|
+
```
|
61
|
+
|
62
|
+
## 发布
|
63
|
+
|
64
|
+
最后执行 `pnpm run prepare --filter {./packages} && pnpm run release`,便可以发布对应的模块了。
|
65
|
+
|
66
|
+
:::info 补充信息
|
67
|
+
在上面的命令中 --filter {./packages} 用于筛选位于 `./packages` 目录下的子项目,可以通过 [PNPM Filtering](https://pnpm.io/filtering) 来了解更多它的使用。
|
68
|
+
:::
|
@@ -0,0 +1,170 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 3
|
3
|
+
---
|
4
|
+
|
5
|
+
# 子项目联调
|
6
|
+
|
7
|
+
本章将要介绍如何在 Monorepo 下进行子项目之间的联调使用。
|
8
|
+
|
9
|
+
## 准备工作
|
10
|
+
|
11
|
+
按照 [「创建子项目」](/docs/guides/topic-detail/monorepo/create-sub-project) 章节的介绍(如果还没有看过,可以先了解一下),我们首先创建以下三个子项目:
|
12
|
+
|
13
|
+
- 一个「应用」子项目
|
14
|
+
- 一个「模块(内部)」子项目
|
15
|
+
- 一个「模块」子项目
|
16
|
+
|
17
|
+
执行 `pnpm run new`,并按照如下进行选择:
|
18
|
+
|
19
|
+
**「应用」子项目:**
|
20
|
+
```
|
21
|
+
? 请选择你想创建的工程类型 应用
|
22
|
+
? 请填写子项目名称 app
|
23
|
+
? 请填写子项目目录名称 app
|
24
|
+
? 请选择开发语言 TS
|
25
|
+
? 是否需要支持以下类型应用 不需要
|
26
|
+
? 是否需要调整默认配置? 否
|
27
|
+
```
|
28
|
+
|
29
|
+
**「模块(内部)」子项目:**
|
30
|
+
```
|
31
|
+
? 请选择你想创建的工程类型 模块(内部)
|
32
|
+
? 请填写子项目名称 internal-lib
|
33
|
+
? 请填写子项目目录名称 internal-lib
|
34
|
+
? 请选择开发语言 TS
|
35
|
+
```
|
36
|
+
|
37
|
+
**「模块」子项目:**
|
38
|
+
```
|
39
|
+
? 请选择你想创建的工程类型 模块
|
40
|
+
? 请填写子项目名称 components
|
41
|
+
? 请填写子项目目录名称 components
|
42
|
+
? 请选择开发语言 TS
|
43
|
+
```
|
44
|
+
|
45
|
+
创建成功后,会得到以下项目:
|
46
|
+
|
47
|
+
- `./apps/app`
|
48
|
+
- `./packages/components`
|
49
|
+
- `./features/internal-lib`
|
50
|
+
|
51
|
+
然后修改一下默认的代码和新增文件:
|
52
|
+
|
53
|
+
**重命名 `./pakcages/components/src/index.tsx`**
|
54
|
+
``` tsx
|
55
|
+
import './index.css';
|
56
|
+
|
57
|
+
export default function ({ text }: { text: string }) {
|
58
|
+
return (
|
59
|
+
<div>
|
60
|
+
This is UI Components Log: <p className="log">{text}</p>
|
61
|
+
</div>
|
62
|
+
);
|
63
|
+
}
|
64
|
+
```
|
65
|
+
|
66
|
+
**新增 `./pakcages/components/src/index.css`**
|
67
|
+
``` css
|
68
|
+
.log {
|
69
|
+
color: gray;
|
70
|
+
}
|
71
|
+
```
|
72
|
+
|
73
|
+
**修改 `./features/internal-lib/src/index.ts`**
|
74
|
+
``` tsx
|
75
|
+
export default function (text: string) {
|
76
|
+
return text.toUpperCase();
|
77
|
+
}
|
78
|
+
```
|
79
|
+
|
80
|
+
**修改 `./apps/app/src/App.tsx`**
|
81
|
+
``` tsx
|
82
|
+
import { Switch, Route } from '@modern-js/runtime/router';
|
83
|
+
import formatString from 'internal-lib';
|
84
|
+
import Comp from 'components';
|
85
|
+
|
86
|
+
import './App.css';
|
87
|
+
|
88
|
+
const App = () => (
|
89
|
+
<Switch>
|
90
|
+
<Route exact={true} path="/">
|
91
|
+
<div className="container-box">
|
92
|
+
<Comp text={formatString('hello world')} />
|
93
|
+
{/* 省略... */}
|
94
|
+
</div>
|
95
|
+
</Route>
|
96
|
+
<Route path="*">
|
97
|
+
<div>404</div>
|
98
|
+
</Route>
|
99
|
+
</Switch>
|
100
|
+
);
|
101
|
+
|
102
|
+
export default App;
|
103
|
+
```
|
104
|
+
|
105
|
+
到此为止我们创建了一个可以被发布到外部的组件项目、一个转换字符串的内部模块项目以及一个使用组件和内部模块的应用项目,如果直接运行应用项目还暂时无法正常使用。接下来将要介绍如何让它们能够互相联调使用,成功的使应用子项目 `apps/app` 正常运行。
|
106
|
+
|
107
|
+
:::info 注
|
108
|
+
启动 `apps/app` 项目之前需要先构建(`pnpm run build`) `packages/component`。
|
109
|
+
:::
|
110
|
+
|
111
|
+
由于Modern.js 支持 pnpm 与 Yarn 的 Monorepo 工程,接下来会从这两个方面分别介绍。
|
112
|
+
|
113
|
+
## 在使用 pnpm 的 Monorepo 中进行项目联调
|
114
|
+
|
115
|
+
在 pnpm 的 Monorepo 项目中,我们通过在 `apps/app` 子项目下分别执行:
|
116
|
+
|
117
|
+
```
|
118
|
+
pnpm add components
|
119
|
+
```
|
120
|
+
|
121
|
+
以及
|
122
|
+
|
123
|
+
```
|
124
|
+
pnpm add internal-lib -D
|
125
|
+
```
|
126
|
+
|
127
|
+
:::info 注
|
128
|
+
注意这里将 internal-lib 作为 `apps/app` 项目的开发依赖,因为在构建环境会被打包到构建产物中。
|
129
|
+
:::
|
130
|
+
|
131
|
+
将 `packages/components` 与 `features/internal-lib` 子项目加入到应用的依赖列表当中。
|
132
|
+
|
133
|
+
执行成功后,在 `apps/app/package.json` 会发生如下变化:
|
134
|
+
|
135
|
+
``` json
|
136
|
+
{
|
137
|
+
"dependencies": {
|
138
|
+
++ "components": "workspace:^0.1.0"
|
139
|
+
},
|
140
|
+
"devDependencies": {
|
141
|
+
++ "internal-lib": "workspace:^0.1.0"
|
142
|
+
},
|
143
|
+
}
|
144
|
+
```
|
145
|
+
|
146
|
+
:::info 补充信息
|
147
|
+
`workspace:^0.1.0` 是一种 PNPM 提供的 [Workspace 协议](https://pnpm.io/workspaces#workspace-protocol-workspace)。
|
148
|
+
:::
|
149
|
+
|
150
|
+
当依赖安装成功之后,我们还需要将 `packages/components` 进行构建,因为需要使用其构建产物。
|
151
|
+
|
152
|
+
到此为止,`app/apps` 应用子项目可以正常的运行了。在修改 `features/internal-lib` 的源码,或者修改 `packages/components` 的源码并构建之后都会触发应用子项目的热更新。
|
153
|
+
|
154
|
+
## 在使用 Yarn 的 Monorepo 中进行项目联调
|
155
|
+
|
156
|
+
在 Yarn 的 Monorepo 项目中,默认情况下可以直接在 `apps/app` 应用项目中直接使用组件项目和内部模块项目。
|
157
|
+
|
158
|
+
:::info 补充信息
|
159
|
+
之所以可以直接在应用中使用使用组件项目和内部模块项目,是因为 Yarn 将这些子项目模块提升到了顶层的 `node_modules`内。
|
160
|
+
:::
|
161
|
+
|
162
|
+
但是由于组件 `components` 是非内部模块,因此建议在 `apps/app/package.json` 中进行依赖声明:
|
163
|
+
|
164
|
+
``` json
|
165
|
+
{
|
166
|
+
"dependencies": {
|
167
|
+
++ "components": "0.1.0"
|
168
|
+
},
|
169
|
+
}
|
170
|
+
```
|
@@ -0,0 +1,379 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 1
|
3
|
+
---
|
4
|
+
|
5
|
+
# 编译构建问题
|
6
|
+
|
7
|
+
### 如何配置 Webpack/Babel/PostCSS 等工具?
|
8
|
+
|
9
|
+
请参考 [配置底层工具](/docs/guides/advanced-features/low-level)。
|
10
|
+
|
11
|
+
### 如何自定义 HTML 模板?
|
12
|
+
|
13
|
+
请参考 [自定义 HTML 模板](/docs/guides/basic-features/html)。
|
14
|
+
|
15
|
+
### 如何提升编译构建速度?
|
16
|
+
|
17
|
+
请参考 [提升编译速度](/docs/guides/topic-detail/compile-speed)。
|
18
|
+
|
19
|
+
### 如何查看最终生效的 webpack 配置?
|
20
|
+
|
21
|
+
可以通过 [modern inspect](/docs/apis/app/commands/inspect) 命令来查看最终生效的 webpack 配置。
|
22
|
+
|
23
|
+
---
|
24
|
+
|
25
|
+
### 如何配置组件库按需引入?
|
26
|
+
|
27
|
+
默认情况下,Modern.js 内置了 antd 组件库的按需引入配置。
|
28
|
+
|
29
|
+
如果需要配置其他组件库的按需引入,可以通过 [tools.babel](/docs/configure/app/tools/babel) 配置 [babel-plugin-import](https://github.com/umijs/babel-plugin-import) 插件。
|
30
|
+
|
31
|
+
```ts title="modern.config.ts"
|
32
|
+
export default defineConfig({
|
33
|
+
tools: {
|
34
|
+
babel: (config, { addPlugins }) => {
|
35
|
+
addPlugins([
|
36
|
+
[
|
37
|
+
'babel-plugin-import',
|
38
|
+
{
|
39
|
+
libraryName: 'xxx-components',
|
40
|
+
libraryDirectory: 'es',
|
41
|
+
style: true,
|
42
|
+
},
|
43
|
+
],
|
44
|
+
]);
|
45
|
+
},
|
46
|
+
},
|
47
|
+
});
|
48
|
+
```
|
49
|
+
|
50
|
+
---
|
51
|
+
|
52
|
+
### 如何移除代码中的 console?
|
53
|
+
|
54
|
+
在生产环境构建时,我们可以移除代码中的 `console`,从而避免开发环境的日志被输出到生产环境。
|
55
|
+
|
56
|
+
由于 Modern.js 默认在生产环境使用 [terser](https://github.com/terser/terser) 进行代码压缩,因此我们可以通过 [tools.terser](/docs/configure/app/tools/terser) 配置项来移除 `console`:
|
57
|
+
|
58
|
+
```js title="modern.config.ts"
|
59
|
+
export default defineConfig({
|
60
|
+
tools: {
|
61
|
+
terser: opt => {
|
62
|
+
if (typeof opt.terserOptions?.compress === 'object') {
|
63
|
+
opt.terserOptions.compress.drop_console = true;
|
64
|
+
}
|
65
|
+
},
|
66
|
+
},
|
67
|
+
});
|
68
|
+
```
|
69
|
+
|
70
|
+
如果只希望移除 `console.log` 和 `console.warn`,保留 `console.error`,可以配置为:
|
71
|
+
|
72
|
+
```js title="modern.config.ts"
|
73
|
+
export default defineConfig({
|
74
|
+
tools: {
|
75
|
+
terser: opt => {
|
76
|
+
if (typeof opt.terserOptions?.compress === 'object') {
|
77
|
+
opt.terserOptions.compress.pure_funcs = ['console.log', 'console.warn'];
|
78
|
+
}
|
79
|
+
},
|
80
|
+
},
|
81
|
+
});
|
82
|
+
```
|
83
|
+
|
84
|
+
---
|
85
|
+
|
86
|
+
### 如何清空 webpack 编译缓存?
|
87
|
+
|
88
|
+
默认情况下,Modern.js 的 webpack 编译缓存生成在 `./node_modules/.cache/webpack` 目录下。
|
89
|
+
|
90
|
+
如果需要清空本地的编译缓存,可以执行以下命令:
|
91
|
+
|
92
|
+
```bash
|
93
|
+
rm -rf ./node_modules/.cache
|
94
|
+
```
|
95
|
+
|
96
|
+
---
|
97
|
+
|
98
|
+
### 如何配置静态资源的 CDN 路径?
|
99
|
+
|
100
|
+
如果需要将 JS、CSS 等静态资源上传到 CDN 使用,那么可以通过 [output.assetPrefix](/docs/configure/app/output/asset-prefix) 配置来设置静态资源的 URL 前缀。
|
101
|
+
|
102
|
+
```js title="modern.config.js"
|
103
|
+
import { defineConfig } from '@modern-js/app-tools';
|
104
|
+
|
105
|
+
export default defineConfig({
|
106
|
+
output: {
|
107
|
+
assetPrefix: 'https://cdn.example.com/assets/',
|
108
|
+
},
|
109
|
+
});
|
110
|
+
```
|
111
|
+
|
112
|
+
---
|
113
|
+
|
114
|
+
### 如何在编译过程中进行 ESLint 代码校验?
|
115
|
+
|
116
|
+
出于编译性能的考虑,Modern.js 默认不会在编译过程中进行 ESLint 校验,如果需要该功能,可以手动安装并注册社区中的 [eslint-webpack-plugin](https://github.com/webpack-contrib/eslint-webpack-plugin)。
|
117
|
+
|
118
|
+
注册该插件的示例代码如下,更详细的用法请参考 [eslint-webpack-plugin](https://github.com/webpack-contrib/eslint-webpack-plugin) 文档。
|
119
|
+
|
120
|
+
```js title="modern.config.js"
|
121
|
+
import { defineConfig } from '@modern-js/app-tools';
|
122
|
+
import ESLintPlugin from 'eslint-webpack-plugin';
|
123
|
+
|
124
|
+
export default defineConfig({
|
125
|
+
tools: {
|
126
|
+
webpackChain(chain) {
|
127
|
+
chain.plugin('eslint-plugin').use(ESLintPlugin, [
|
128
|
+
{
|
129
|
+
extensions: ['.js', '.ts', '.jsx', 'tsx', '.mjs'],
|
130
|
+
},
|
131
|
+
]);
|
132
|
+
},
|
133
|
+
},
|
134
|
+
});
|
135
|
+
```
|
136
|
+
|
137
|
+
---
|
138
|
+
|
139
|
+
### 如何配置 SRI 校验?
|
140
|
+
|
141
|
+
在 Modern.js 中,需要自主引入社区中的 [webpack-subresource-integrity](https://github.com/waysact/webpack-subresource-integrity) 插件来开启 SRI 校验。
|
142
|
+
|
143
|
+
配置 [webpack-subresource-integrity](https://github.com/waysact/webpack-subresource-integrity) 的示例如下:
|
144
|
+
|
145
|
+
```js title="modern.config.js"
|
146
|
+
import { defineConfig } from '@modern-js/app-tools';
|
147
|
+
import { SubresourceIntegrityPlugin } from 'webpack-subresource-integrity';
|
148
|
+
|
149
|
+
export default defineConfig({
|
150
|
+
tools: {
|
151
|
+
webpackChain(chain) {
|
152
|
+
chain.output.crossOriginLoading('anonymous');
|
153
|
+
chain.plugin('subresource-integrity').use(SubresourceIntegrityPlugin);
|
154
|
+
},
|
155
|
+
},
|
156
|
+
});
|
157
|
+
```
|
158
|
+
|
159
|
+
:::info SRI
|
160
|
+
子资源完整性 Subresource Integrity(SRI)是专门用来校验资源的一种方案,它读取资源标签中的 integrity 属性,将其中的信息摘要值,和资源实际的信息摘要值进行对比,如果发现无法匹配,那么浏览器就会拒绝执行资源。
|
161
|
+
|
162
|
+
对于 script 标签来说,结果为拒绝执行其中的代码;对于 CSS link 来说,结果为不加载其中的样式。
|
163
|
+
:::
|
164
|
+
|
165
|
+
---
|
166
|
+
|
167
|
+
### Less/Sass 代码没有被正确编译?
|
168
|
+
|
169
|
+
Modern.js 通过插件来编译 Less/Sass 代码,请确认你是否启用了对应的插件。
|
170
|
+
|
171
|
+
- [启用 Less 插件教程](/docs/configure/app/tools/less#启用)
|
172
|
+
- [启用 Sass 插件教程](/docs/configure/app/tools/sass#启用)
|
173
|
+
|
174
|
+
---
|
175
|
+
|
176
|
+
### 在 Monorepo 中引用其他模块,代码没有被正确编译?
|
177
|
+
|
178
|
+
出于编译性能的考虑,默认情况下,Modern.js 不会通过 `babel-loader` 或 `ts-loader` 来编译 `node_modules` 下的文件,也不会编译当前工程目录外部的文件。
|
179
|
+
|
180
|
+
通过 `source.include` 配置项,可以指定需要额外进行编译的目录或模块。
|
181
|
+
|
182
|
+
详见 [source.include 用法介绍](/docs/configure/app/source/include/)。
|
183
|
+
|
184
|
+
---
|
185
|
+
|
186
|
+
### 打包时出现 JavaScript heap out of memory?
|
187
|
+
|
188
|
+
该报错表示打包过程中出现了内存溢出问题,大多数情况下是由于打包的内容较多,超出了 Node.js 默认的内存上限。
|
189
|
+
|
190
|
+
如果出现 OOM 问题,最简单的方法是通过增加内存上限来解决,Node.js 提供了 `--max-old-space-size` 选项来对此进行设置。你可以在 `modern build` 命令前添加 [NODE_OPTIONS](http://nodejs.cn/api/cli/node_options_options.html) 来设置此参数:
|
191
|
+
|
192
|
+
```bash
|
193
|
+
NODE_OPTIONS=--max_old_space_size=16384 modern build
|
194
|
+
```
|
195
|
+
|
196
|
+
参数的值代表内存上限大小(MB),一般情况下设置为 `16384`(16GB)即可。
|
197
|
+
|
198
|
+
Node.js 官方文档中有对以下参数更详细的解释:
|
199
|
+
|
200
|
+
- [NODE_OPTIONS](http://nodejs.cn/api/cli/node_options_options.html)
|
201
|
+
- [--max-old-space-size](http://nodejs.cn/api/cli/max_old_space_size_size_in_megabytes.html)
|
202
|
+
|
203
|
+
除了增加内存上限,通过开启一些编译策略来提升效率也是一个解决方案,详见 [提升编译速度](/docs/guides/topic-detail/compile-speed)。
|
204
|
+
|
205
|
+
---
|
206
|
+
|
207
|
+
### webpack 编译出现 'compilation' argument 报错?
|
208
|
+
|
209
|
+
如果编译时出现以下报错,通常是由于项目中安装了错误的 webpack 版本,或者安装了多个 webpack 版本引起:
|
210
|
+
|
211
|
+
```bash
|
212
|
+
TypeError: The 'compilation' argument must be an instance of Compilation
|
213
|
+
```
|
214
|
+
|
215
|
+
webpack 版本问题有以下几种情况:
|
216
|
+
|
217
|
+
1. 项目的 package.json 中直接声明了 webpack 依赖,并且与 Modern.js 依赖的 webpack 版本范围不同,无法匹配到同一个版本。
|
218
|
+
2. 项目里安装的多个 npm 包都依赖了 webpack,并且它们依赖的 webpack 版本范围不同,无法匹配到同一个版本。
|
219
|
+
3. 由于包管理器的 lock 机制,导致 lock 文件中产生了多个 webpack 版本。
|
220
|
+
|
221
|
+
如果是第一种情况,建议从项目的 package.json 中移除 webpack 依赖。因为 Modern.js 默认封装了 webpack 相关能力,并且会在 `tools.webpack` 配置项中传入 webpack 对象。因此在大多数情况下,不建议在项目中额外安装 webpack 依赖。
|
222
|
+
|
223
|
+
如果是第二种情况,建议看看能否升级某个 npm 包,使其依赖的 webpack 版本范围与 Modern.js 保持一致。也可以通过包管理器的能力来手动统一版本,比如使用 [yarn resolutions](https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/) 或 [pnpm overrides](https://pnpm.io/package_json#pnpmoverrides)。
|
224
|
+
|
225
|
+
如果是第三种情况,可以使用第二种情况中提到的两种方法,也可以尝试删除 lock 文件后重新安装来解决。
|
226
|
+
|
227
|
+
:::info
|
228
|
+
删除 lock 文件会使项目中的依赖版本自动升级到指定范围下的最新版,请进行充分的测试。
|
229
|
+
:::
|
230
|
+
|
231
|
+
---
|
232
|
+
|
233
|
+
### Less 文件中的除法不生效?
|
234
|
+
|
235
|
+
Less v4 版本与 v3 版本相比,除法的写法有一些区别:
|
236
|
+
|
237
|
+
```less
|
238
|
+
// Less v3
|
239
|
+
.math {
|
240
|
+
width: 2px / 2; // 1px
|
241
|
+
width: 2px ./ 2; // 1px
|
242
|
+
width: (2px / 2); // 1px
|
243
|
+
}
|
244
|
+
|
245
|
+
// Less v4
|
246
|
+
.math {
|
247
|
+
width: 2px / 2; // 2px / 2
|
248
|
+
width: 2px ./ 2; // 1px
|
249
|
+
width: (2px / 2); // 1px
|
250
|
+
}
|
251
|
+
```
|
252
|
+
|
253
|
+
Modern.js 内置的 Less 版本为 v4,低版本的写法不会生效,请注意区分。
|
254
|
+
|
255
|
+
Less 中除法的写法也可以通过配置项来修改,详见 [Less - Math](https://lesscss.org/usage/#less-options-math)。
|
256
|
+
|
257
|
+
---
|
258
|
+
|
259
|
+
### 编译产物中存在未编译的 ES6+ 代码?
|
260
|
+
|
261
|
+
默认情况下,Modern.js 不会通过 `babel-loader` 或 `ts-loader` 来编译 `node_modules` 下的文件。如果项目引入的 npm 包中含有 ES6+ 语法,会被打包进产物中。
|
262
|
+
|
263
|
+
遇到这种情况时,可以通过 [source.include](/docs/configure/app/source/include) 配置项来指定需要额外进行编译的目录或模块。
|
264
|
+
|
265
|
+
---
|
266
|
+
|
267
|
+
### 编译时报错 `You may need additional loader`?
|
268
|
+
|
269
|
+
如果编译过程中遇到了以下报错提示,表示存在个别文件无法被正确编译。
|
270
|
+
|
271
|
+
```bash
|
272
|
+
Module parse failed: Unexpected token
|
273
|
+
File was processed with these loaders:
|
274
|
+
* some-loader/index.js
|
275
|
+
|
276
|
+
You may need an additional loader to handle the result of these loaders.
|
277
|
+
```
|
278
|
+
|
279
|
+
解决方法:
|
280
|
+
|
281
|
+
- 如果是引用了当前工程外部的 `.ts` 文件,或者是 node_modules 下的 `.ts` 文件,请添加 [source.include](/docs/configure/app/source/include) 配置项,指定需要额外进行编译的文件。
|
282
|
+
- 如果是引用了 Modern.js 不支持的文件格式,请自行配置对应的 webpack loader 进行编译。
|
283
|
+
|
284
|
+
---
|
285
|
+
|
286
|
+
### 打开页面后报错,提示 exports is not defined?
|
287
|
+
|
288
|
+
如果编译正常,但是打开页面后出现 `exports is not defined` 报错,通常是因为在项目中使用 babel 编译了一个 CommonJS 模块,导致 babel 出现异常。
|
289
|
+
|
290
|
+
在正常情况下,Modern.js 是不会使用 babel 来编译 CommonJS 模块的。如果项目中使用了 `source.include` 配置项,或使用了 `tools.babel` 的 `addIncludes` 方法,则可能会把一些 CommonJS 模块加入到 babel 编译中。
|
291
|
+
|
292
|
+
该问题有两种解决方法:
|
293
|
+
|
294
|
+
1. 避免将 CommonJS 模块加入到 babel 编译中。
|
295
|
+
2. 将 babel 的 `sourceType` 配置项设置为 `unambiguous`,示例如下:
|
296
|
+
|
297
|
+
```js
|
298
|
+
export default defineConfig({
|
299
|
+
tools: {
|
300
|
+
babel(config) {
|
301
|
+
config.sourceType = 'unambiguous';
|
302
|
+
},
|
303
|
+
},
|
304
|
+
});
|
305
|
+
```
|
306
|
+
|
307
|
+
将 `sourceType` 设置为 `unambiguous` 可能会产生一些其他影响,请参考 [babel 官方文档](https://babeljs.io/docs/en/options#sourcetype)。
|
308
|
+
|
309
|
+
---
|
310
|
+
|
311
|
+
### 打包后发现 Tree Shaking 没有生效?
|
312
|
+
|
313
|
+
Modern.js 在生产构建时会默认开启 webpack 的 Tree Shaking 功能,Tree Shaking 是否能够生效,取决于业务代码能否满足 webpack 的 Tree Shaking 条件。
|
314
|
+
|
315
|
+
如果你遇到了 Tree Shaking 不生效的问题,可以检查下相关 npm 包的 `sideEffects` 配置是否正确,如果不了解 `sideEffects` 是什么,可以阅读以下两篇文档:
|
316
|
+
|
317
|
+
- [webpack 官方文档 - Tree Shaking](https://webpack.docschina.org/guides/tree-shaking/)
|
318
|
+
- [Tree Shaking 问题排查指南](https://bytedance.feishu.cn/docs/doccn8E1ldDct5uv1EEDQs8Ycwe)
|
319
|
+
|
320
|
+
---
|
321
|
+
|
322
|
+
### 热更新后 React 组件的 state 丢失?
|
323
|
+
|
324
|
+
Modern.js 使用 React 官方的 [Fast Refresh](https://github.com/pmmmwh/react-refresh-webpack-plugin) 能力来进行组件热更新。
|
325
|
+
|
326
|
+
在使用 Fast Refresh 时,要求组件不能为匿名函数,否则热更新后无法保留 React 组件的 state。
|
327
|
+
|
328
|
+
以下写法都是不正确的:
|
329
|
+
|
330
|
+
```js
|
331
|
+
// 错误写法 1
|
332
|
+
export default function () {
|
333
|
+
return <div>Hello World</div>;
|
334
|
+
}
|
335
|
+
|
336
|
+
// 错误写法 2
|
337
|
+
export default () => <div>Hello World</div>;
|
338
|
+
```
|
339
|
+
|
340
|
+
正确的写法为:
|
341
|
+
|
342
|
+
```js
|
343
|
+
// 正确写法 1
|
344
|
+
export default function MyComponent() {
|
345
|
+
return <div>Hello World</div>;
|
346
|
+
}
|
347
|
+
|
348
|
+
// 正确写法 2
|
349
|
+
const MyComponent = () => <div>Hello World</div>
|
350
|
+
|
351
|
+
export default MyComponent;
|
352
|
+
```
|
353
|
+
|
354
|
+
---
|
355
|
+
|
356
|
+
### webpack 编译缓存未生效,应该如何排查?
|
357
|
+
|
358
|
+
Modern.js 默认开启了 webpack 的持久化缓存。
|
359
|
+
|
360
|
+
首次编译完成后,会自动生成缓存文件,并输出到 `./node_modules/.cache/webpack` 目录下。执行第二次编译时,会命中缓存,并大幅度提高编译速度。
|
361
|
+
|
362
|
+
当 `modern.config.ts` 或 `package.json` 等配置文件被修改时,缓存会自动失效。
|
363
|
+
|
364
|
+
如果项目中 webpack 编译缓存一直未生效,可以添加以下配置进行排查:
|
365
|
+
|
366
|
+
```ts
|
367
|
+
export default defineConfig({
|
368
|
+
tools: {
|
369
|
+
webpack(config) {
|
370
|
+
config.infrastructureLogging = {
|
371
|
+
...config.infrastructureLogging,
|
372
|
+
debug: true,
|
373
|
+
};
|
374
|
+
},
|
375
|
+
},
|
376
|
+
});
|
377
|
+
```
|
378
|
+
|
379
|
+
添加以上配置后,webpack 会输出日志用于 debug,请参考 `PackFileCacheStrategy` 相关的日志来了解缓存失效的原因。
|