@modern-js/main-doc 2.0.0-beta.2 → 2.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/inspect.md +0 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/new.md +0 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/bootstrap.md +17 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-app.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-store.md +0 -22
- package/en/docusaurus-plugin-content-docs/current/components/init-app.md +42 -0
- package/en/docusaurus-plugin-content-docs/current/components/reduck-migration.md +1 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/asset-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/hmr.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/https.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/port.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/progress-bar.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/start-url.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/experiments/lazy-compilation.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/app-icon.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/crossorigin.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/disable-html-folder.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/favicon-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/favicon.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/inject-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/inject.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/meta-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/meta.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/mount-id.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-parameters-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-parameters.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/title-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/title.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/asset-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/assets-retry.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/charset.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/clean-dist-path.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/convert-to-rem.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/copy.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/css-module-local-ident-name.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/data-uri-limit.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-extract.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-module-extension.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-filename-hash.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-inline-runtime-chunk.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-minimize.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-source-map.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-ts-checker.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/dist-path.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-asset-fallback.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-asset-manifest.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-css-module-tsdeclaration.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-inline-scripts.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-inline-styles.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-latest-decorators.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/externals.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/filename.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/legal-comments.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/override-browserslist.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/polyfill.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/svg-default-export.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/build-cache.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/bundle-analyze.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/chunk-split.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/print-file-size.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/profile.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/remove-console.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/remove-moment-locale.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/plugins.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/security/sri.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/server/routes.md +2 -4
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/alias.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/compile-js-data-uri.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/define.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/exclude.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/global-vars.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/include.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/module-scopes.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/pre-entry.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/resolve-extension-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/resolve-main-fields.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/autoprefixer.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/babel.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/css-extract.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/css-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/dev-server.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/esbuild.md +16 -39
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/html-plugin.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/inspector.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/less.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/minify-css.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/postcss.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/pug.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/sass.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/style-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/styled-components.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/swc.md +42 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/terser.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/ts-checker.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/ts-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/webpack-chain.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/webpack.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/builder.md +46 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/css-in-js.md +38 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/css-modules.md +86 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/less-sass.md +17 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/postcss.md +81 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/tailwindcss.md +95 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/data-fetch.md +66 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/routes.md +270 -0
- package/en/docusaurus-plugin-content-docs/current/guides/concept/entries.md +116 -0
- package/en/docusaurus-plugin-content-docs/current/guides/concept/lifecycle.md +15 -0
- package/en/docusaurus-plugin-content-docs/current/guides/get-started/quick-start.md +162 -0
- package/en/docusaurus-plugin-content-docs/current/guides/get-started/upgrade.md +78 -0
- package/{zh/tutorials/first-app → en/docusaurus-plugin-content-docs/current/guides}/overview.md +4 -4
- package/en/docusaurus-plugin-content-docs/current/tutorials/foundations/introduction.md +1 -1
- package/en/docusaurus-plugin-content-docs/current.json +29 -29
- package/package.json +3 -3
- package/scripts/config.ts +2 -2
- package/zh/apis/app/commands/inspect.md +0 -4
- package/zh/apis/app/commands/new.md +1 -3
- package/zh/apis/app/hooks/src/index_.md +6 -5
- package/zh/apis/app/runtime/app/_category_.json +1 -1
- package/zh/apis/app/runtime/bff/_category_.json +1 -1
- package/zh/apis/app/runtime/core/_category_.json +1 -1
- package/zh/apis/app/runtime/core/bootstrap.md +17 -3
- package/zh/apis/app/runtime/model/_category_.json +1 -1
- package/zh/apis/app/runtime/model/create-app.md +1 -1
- package/zh/apis/app/runtime/model/use-store.md +1 -23
- package/zh/apis/app/runtime/router/_category_.json +1 -1
- package/zh/apis/app/runtime/ssr/_category_.json +1 -1
- package/zh/apis/app/runtime/testing/_category_.json +1 -1
- package/zh/apis/app/runtime/utility/_category_.json +1 -1
- package/zh/apis/app/runtime/web-server/_category_.json +1 -1
- package/zh/components/debug-app.md +18 -0
- package/zh/components/global-proxy.md +28 -0
- package/zh/components/init-app.md +44 -0
- package/zh/components/prerequisites.md +19 -0
- package/zh/components/reduck-migration.md +1 -0
- package/zh/configure/app/dev/asset-prefix.md +1 -1
- package/zh/configure/app/dev/hmr.md +1 -1
- package/zh/configure/app/dev/https.md +1 -1
- package/zh/configure/app/dev/port.md +1 -1
- package/zh/configure/app/dev/progress-bar.md +1 -1
- package/zh/configure/app/dev/start-url.md +1 -1
- package/zh/configure/app/experiments/_category_.json +4 -0
- package/zh/configure/app/experiments/lazy-compilation.md +1 -1
- package/zh/configure/app/html/_category_.json +4 -0
- package/zh/configure/app/html/app-icon.md +1 -1
- package/zh/configure/app/html/crossorigin.md +1 -1
- package/zh/configure/app/html/disable-html-folder.md +1 -1
- package/zh/configure/app/html/favicon-by-entries.md +1 -1
- package/zh/configure/app/html/favicon.md +1 -1
- package/zh/configure/app/html/inject-by-entries.md +1 -1
- package/zh/configure/app/html/inject.md +1 -1
- package/zh/configure/app/html/meta-by-entries.md +1 -1
- package/zh/configure/app/html/meta.md +1 -1
- package/zh/configure/app/html/mount-id.md +1 -1
- package/zh/configure/app/html/template-by-entries.md +1 -1
- package/zh/configure/app/html/template-parameters-by-entries.md +1 -1
- package/zh/configure/app/html/template-parameters.md +1 -1
- package/zh/configure/app/html/template.md +1 -1
- package/zh/configure/app/html/title-by-entries.md +1 -1
- package/zh/configure/app/html/title.md +1 -1
- package/zh/configure/app/output/asset-prefix.md +1 -1
- package/zh/configure/app/output/assets-retry.md +1 -1
- package/zh/configure/app/output/charset.md +1 -1
- package/zh/configure/app/output/clean-dist-path.md +1 -1
- package/zh/configure/app/output/convert-to-rem.md +1 -1
- package/zh/configure/app/output/copy.md +1 -1
- package/zh/configure/app/output/css-module-local-ident-name.md +1 -1
- package/zh/configure/app/output/data-uri-limit.md +1 -1
- package/zh/configure/app/output/disable-css-extract.md +1 -1
- package/zh/configure/app/output/disable-css-module-extension.md +1 -1
- package/zh/configure/app/output/disable-filename-hash.md +1 -1
- package/zh/configure/app/output/disable-inline-runtime-chunk.md +1 -1
- package/zh/configure/app/output/disable-minimize.md +1 -1
- package/zh/configure/app/output/disable-source-map.md +1 -1
- package/zh/configure/app/output/disable-ts-checker.md +1 -1
- package/zh/configure/app/output/dist-path.md +1 -1
- package/zh/configure/app/output/enable-asset-fallback.md +1 -1
- package/zh/configure/app/output/enable-asset-manifest.md +1 -1
- package/zh/configure/app/output/enable-css-module-tsdeclaration.md +1 -1
- package/zh/configure/app/output/enable-inline-scripts.md +1 -1
- package/zh/configure/app/output/enable-inline-styles.md +1 -1
- package/zh/configure/app/output/enable-latest-decorators.md +1 -1
- package/zh/configure/app/output/externals.md +1 -1
- package/zh/configure/app/output/filename.md +1 -1
- package/zh/configure/app/output/legal-comments.md +1 -1
- package/zh/configure/app/output/override-browserslist.md +1 -1
- package/zh/configure/app/output/polyfill.md +1 -1
- package/zh/configure/app/output/ssg.md +118 -114
- package/zh/configure/app/output/svg-default-export.md +1 -1
- package/zh/configure/app/performance/_category_.json +4 -0
- package/zh/configure/app/performance/build-cache.md +1 -1
- package/zh/configure/app/performance/bundle-analyze.md +1 -1
- package/zh/configure/app/performance/chunk-split.md +1 -1
- package/zh/configure/app/performance/print-file-size.md +1 -1
- package/zh/configure/app/performance/profile.md +1 -1
- package/zh/configure/app/performance/remove-console.md +1 -1
- package/zh/configure/app/performance/remove-moment-locale.md +1 -1
- package/zh/configure/app/plugins.md +1 -1
- package/zh/configure/app/runtime/state.md +13 -0
- package/zh/configure/app/security/_category_.json +4 -0
- package/zh/configure/app/security/sri.md +1 -1
- package/zh/configure/app/server/routes.md +2 -4
- package/zh/configure/app/server/ssr.md +0 -2
- package/zh/configure/app/source/alias.md +1 -1
- package/zh/configure/app/source/compile-js-data-uri.md +1 -1
- package/zh/configure/app/source/define.md +1 -1
- package/zh/configure/app/source/exclude.md +1 -1
- package/zh/configure/app/source/global-vars.md +1 -1
- package/zh/configure/app/source/include.md +1 -1
- package/zh/configure/app/source/module-scopes.md +1 -1
- package/zh/configure/app/source/pre-entry.md +1 -1
- package/zh/configure/app/source/resolve-extension-prefix.md +1 -1
- package/zh/configure/app/source/resolve-main-fields.md +1 -1
- package/zh/configure/app/tools/autoprefixer.md +1 -1
- package/zh/configure/app/tools/babel.md +1 -1
- package/zh/configure/app/tools/css-extract.md +1 -1
- package/zh/configure/app/tools/css-loader.md +1 -1
- package/zh/configure/app/tools/dev-server.md +1 -1
- package/zh/configure/app/tools/esbuild.md +16 -39
- package/zh/configure/app/tools/html-plugin.md +1 -1
- package/zh/configure/app/tools/inspector.md +1 -1
- package/zh/configure/app/tools/less.md +1 -1
- package/zh/configure/app/tools/minify-css.md +1 -1
- package/zh/configure/app/tools/postcss.md +1 -1
- package/zh/configure/app/tools/pug.md +1 -1
- package/zh/configure/app/tools/sass.md +1 -1
- package/zh/configure/app/tools/style-loader.md +1 -1
- package/zh/configure/app/tools/styled-components.md +1 -1
- package/zh/configure/app/tools/swc.md +42 -0
- package/zh/configure/app/tools/terser.md +1 -1
- package/zh/configure/app/tools/ts-checker.md +1 -1
- package/zh/configure/app/tools/ts-loader.md +1 -1
- package/zh/configure/app/tools/webpack-chain.md +1 -1
- package/zh/configure/app/tools/webpack.md +1 -1
- package/zh/guides/advanced-features/bff/bff-proxy.md +1 -1
- package/zh/guides/advanced-features/compatibility.md +2 -38
- package/zh/guides/advanced-features/custom-app.md +23 -19
- package/zh/guides/advanced-features/ssg.md +73 -62
- package/zh/guides/advanced-features/ssr.md +142 -36
- package/zh/guides/advanced-features/testing.md +33 -1
- package/zh/guides/advanced-features/web-server.md +2 -2
- package/zh/guides/basic-features/builder.md +46 -0
- package/zh/guides/basic-features/css/_category_.json +1 -1
- package/zh/guides/basic-features/css/less-sass.md +1 -14
- package/zh/guides/basic-features/css/tailwindcss.md +2 -6
- package/zh/guides/basic-features/data-fetch.md +1 -1
- package/zh/guides/basic-features/env-vars.md +34 -0
- package/zh/guides/basic-features/html.md +182 -0
- package/zh/guides/basic-features/mock.md +3 -9
- package/zh/guides/basic-features/proxy.md +2 -27
- package/zh/guides/basic-features/routes.md +32 -35
- package/zh/guides/concept/entries.md +8 -9
- package/zh/guides/get-started/quick-start.md +6 -78
- package/zh/guides/get-started/upgrade.md +8 -8
- package/zh/guides/topic-detail/framework-plugin/extend.md +3 -4
- package/zh/{apis/app/runtime/plugin/hook-api.md → guides/topic-detail/framework-plugin/hook-list.md} +42 -135
- package/zh/{apis/app/runtime/plugin → guides/topic-detail/framework-plugin}/hook.md +2 -3
- package/zh/guides/topic-detail/framework-plugin/implement.md +21 -10
- package/zh/guides/topic-detail/framework-plugin/introduction.md +49 -0
- package/{en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin → zh/guides/topic-detail/framework-plugin}/plugin-api.md +3 -4
- package/zh/guides/topic-detail/framework-plugin/relationship.md +2 -3
- package/zh/guides/topic-detail/model/quick-start.md +5 -1
- package/zh/guides/topic-detail/model/test-model.md +2 -2
- package/zh/guides/topic-detail/monorepo/intro.md +1 -1
- package/zh/guides/troubleshooting/dependencies.md +0 -69
- package/zh/tutorials/first-app/_category_.json +1 -1
- package/zh/tutorials/first-app/c01-start.md +94 -0
- package/zh/tutorials/first-app/c02-component.md +56 -0
- package/zh/tutorials/first-app/c03-css.md +305 -0
- package/zh/tutorials/first-app/c04-routes.md +169 -0
- package/zh/tutorials/first-app/c05-loader.md +82 -0
- package/zh/tutorials/first-app/c06-model.md +256 -0
- package/zh/tutorials/first-app/c07-container.md +268 -0
- package/zh/tutorials/first-app/c08-entries.md +134 -0
- package/zh/tutorials/foundations/introduction.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/default-alias.md +0 -25
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/_category_.json +0 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/abstract.md +0 -26
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/hook-api.md +0 -896
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/hook.md +0 -170
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-modern-mode.md +0 -34
- package/zh/apis/app/runtime/default-alias.md +0 -23
- package/zh/apis/app/runtime/plugin/_category_.json +0 -4
- package/zh/apis/app/runtime/plugin/abstract.md +0 -26
- package/zh/apis/app/runtime/plugin/plugin-api.md +0 -117
- package/zh/apis/generator/overview.md +0 -32
- package/zh/configure/app/output/enable-modern-mode.md +0 -34
- package/zh/guides/basic-features/image.md +0 -43
- package/zh/guides/topic-detail/compile-speed.md +0 -182
- package/zh/guides/topic-detail/framework-plugin/abstract.md +0 -27
- package/zh/guides/topic-detail/monorepo/deploy.md +0 -43
- package/zh/guides/troubleshooting/compile.md +0 -379
- package/zh/tutorials/first-app/c01-getting-started/1.1-prerequisites.md +0 -25
- package/zh/tutorials/first-app/c01-getting-started/1.2-minimal-mwa.md +0 -118
- package/zh/tutorials/first-app/c01-getting-started/1.3-dev-command.md +0 -29
- package/zh/tutorials/first-app/c01-getting-started/1.4-enable-ssr.md +0 -44
- package/zh/tutorials/first-app/c01-getting-started/1.5-start-command.md +0 -18
- package/zh/tutorials/first-app/c01-getting-started/1.6-create-repo.md +0 -31
- package/zh/tutorials/first-app/c01-getting-started/_category_.json +0 -3
- package/zh/tutorials/first-app/c02-generator-and-studio/2.1-generator.md +0 -79
- package/zh/tutorials/first-app/c02-generator-and-studio/2.2-boilerplates.md +0 -36
- package/zh/tutorials/first-app/c02-generator-and-studio/2.3-configuration.md +0 -21
- package/zh/tutorials/first-app/c02-generator-and-studio/_category_.json +0 -3
- package/zh/tutorials/first-app/c03-ide/3.1-setting-up.md +0 -55
- package/zh/tutorials/first-app/c03-ide/3.2-hints-in-ide.md +0 -66
- package/zh/tutorials/first-app/c03-ide/3.3-autofix-in-ide.md +0 -11
- package/zh/tutorials/first-app/c03-ide/3.4-autofix-in-cli.md +0 -63
- package/zh/tutorials/first-app/c03-ide/_category_.json +0 -3
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.1-use-es6-plus.md +0 -67
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.2-use-typescript.md +0 -111
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.3-compatibility.md +0 -67
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/_category_.json +0 -3
- package/zh/tutorials/first-app/c05-component/5.1-use-ui-library.md +0 -68
- package/zh/tutorials/first-app/c05-component/5.2-use-standalone-component.md +0 -92
- package/zh/tutorials/first-app/c05-component/_category_.json +0 -3
- package/zh/tutorials/first-app/c06-css-and-component/6.1-css-in-js.md +0 -110
- package/zh/tutorials/first-app/c06-css-and-component/6.2-utility-class.md +0 -148
- package/zh/tutorials/first-app/c06-css-and-component/6.3-postcss.md +0 -84
- package/zh/tutorials/first-app/c06-css-and-component/6.4-design-system.md +0 -83
- package/zh/tutorials/first-app/c06-css-and-component/6.5-storybook.md +0 -77
- package/zh/tutorials/first-app/c06-css-and-component/6.6-testing.md +0 -113
- package/zh/tutorials/first-app/c06-css-and-component/_category_.json +0 -3
- package/zh/tutorials/first-app/c07-app-entry/7.1-intro.md +0 -64
- package/zh/tutorials/first-app/c07-app-entry/7.2-add-entry-in-cli.md +0 -100
- package/zh/tutorials/first-app/c07-app-entry/7.3-manage-entries-by-hand.md +0 -74
- package/zh/tutorials/first-app/c07-app-entry/_category_.json +0 -3
- package/zh/tutorials/first-app/c08-client-side-routing/8.1-code-based-routing.md +0 -153
- package/zh/tutorials/first-app/c08-client-side-routing/8.2-file-based-routing.md +0 -310
- package/zh/tutorials/first-app/c08-client-side-routing/_category_.json +0 -3
- package/zh/tutorials/first-app/c09-bff/9.1-serverless.md +0 -30
- package/zh/tutorials/first-app/c09-bff/9.2-enable-bff.md +0 -93
- package/zh/tutorials/first-app/c09-bff/9.3-fetch-bff.md +0 -205
- package/zh/tutorials/first-app/c09-bff/_category_.json +0 -3
- package/zh/tutorials/first-app/c10-model/10.1-application-architecture.md +0 -23
- package/zh/tutorials/first-app/c10-model/10.2-add-model.md +0 -185
- package/zh/tutorials/first-app/c10-model/10.3-use-model.md +0 -54
- package/zh/tutorials/first-app/c10-model/10.4-testing.md +0 -69
- package/zh/tutorials/first-app/c10-model/_category_.json +0 -3
- package/zh/tutorials/first-app/c11-container/11.1-use-model-with-app-state.md +0 -274
- package/zh/tutorials/first-app/c11-container/11.2-add-container.md +0 -106
- package/zh/tutorials/first-app/c11-container/11.3-use-loader.md +0 -61
- package/zh/tutorials/first-app/c11-container/11.4-testing.md +0 -56
- package/zh/tutorials/first-app/c11-container/_category_.json +0 -3
|
@@ -1,27 +0,0 @@
|
|
|
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
|
-
:::
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 5
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# 应用项目的部署
|
|
6
|
-
|
|
7
|
-
本章将要介绍如何在 Monorepo 中对应用项目进行部署。
|
|
8
|
-
|
|
9
|
-
所谓的 “在 Monorepo 中对应用项目进行部署” 更像是应用项目部署到服务器的前置工作。应用项目的功能一般来自以下部分
|
|
10
|
-
|
|
11
|
-
- 自身的代码逻辑功能
|
|
12
|
-
- 第三方的依赖
|
|
13
|
-
- Monorepo 中其他子项目提供的逻辑功能
|
|
14
|
-
|
|
15
|
-
而在将应用项目放到部署服务器之前,需要对应用项目、第三方依赖以及它所依赖的子项目做整合处理。
|
|
16
|
-
|
|
17
|
-
Modern.js 为 Monorepo 工程提供了部署功能,该功能可以为要部署的项目生成一个最小集合的 Monorepo,在这个 Monorepo 当中包含应用项目以及其依赖的子项目。
|
|
18
|
-
|
|
19
|
-
我们以 [子项目联调](/docs/guides/topic-detail/monorepo/sub-project-interface) 章节的例子为例,如果要发布 `apps/app` 应用项目,那么在 Monorepo 根目录下执行:
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
pnpm deploy app
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
:::info 补充信息
|
|
26
|
-
`app` 为应用项目的项目名称,或者说是 `package.json` 的 `name` 对应的值。
|
|
27
|
-
:::
|
|
28
|
-
|
|
29
|
-
执行命令之后,首先会在 Monorepo 根目录下生成 `output` 目录,其中包含了应用项目 `apps/app`、`features/internal-lib`、`packages/components`。
|
|
30
|
-
|
|
31
|
-
:::info 补充信息
|
|
32
|
-
`output` 目录就是需要部署到服务器上的目录,可以通过命令参数进行路径修改。可以查看 [deploy 命令](/docs/apis/monorepo/commands/deploy)。
|
|
33
|
-
:::
|
|
34
|
-
|
|
35
|
-

|
|
36
|
-
|
|
37
|
-
然后会自动进行依赖的安装。
|
|
38
|
-
|
|
39
|
-
最后当 deploy 命令运行完成后,我们可以将 `output` 放到部署项目的服务器上。
|
|
40
|
-
|
|
41
|
-
:::tip 提示
|
|
42
|
-
在使用 Yarn 的 Monorepo 中,推荐全局安装 [Lerna](https://github.com/lerna/lerna) 作为 Monorepo 子项目额外的管理工具。由于 [Yarn 1 (Classic) ](https://classic.yarnpkg.com/lang/en/) 在安装依赖的时候,不会触发子项目的 [Life Cycle Scripts](https:/docs.npmjs.com/cli/v7/using-npm/scripts#life-cycle-scripts),因此还需要使用 Lerna 完成这类事情。
|
|
43
|
-
:::
|
|
@@ -1,379 +0,0 @@
|
|
|
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
|
-
```typescript title="modern.config.ts"
|
|
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
|
-
```typescript title="modern.config.ts"
|
|
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
|
-
```typescript title="modern.config.ts"
|
|
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` 相关的日志来了解缓存失效的原因。
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 环境准备
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
从本章节开始,我们将进入实战教程部分。
|
|
6
|
-
|
|
7
|
-
在实战教程中,我们将会从环境准备开始,从简单到复杂,一步一步搭建一个真实的项目。
|
|
8
|
-
|
|
9
|
-
基于 Modern.js 框架的项目,自带全套工程环境和工程能力,对仓库目录之外的环境几乎没有任何依赖,只需要安装以下少数几个最基本的工具。
|
|
10
|
-
|
|
11
|
-
## 1. Node.js
|
|
12
|
-
|
|
13
|
-
需要 [Node.js LTS](https://github.com/nodejs/Release),并确保 Node 版本大于等于 14.19.0, 推荐使用 16.x 版本。
|
|
14
|
-
|
|
15
|
-
Modern.js 推荐在开发环境里先安装 [nvm](https://github.com/nvm-sh/nvm#install--update-script),在 shell 里集成[自动切换 node 版本的脚本](https://github.com/nvm-sh/nvm#deeper-shell-integration)。
|
|
16
|
-
|
|
17
|
-
然后只要仓库根目录下有内容为 `lts/fermium` 或 `lts/gallium` 的 `.nvmrc` 文件,进入这个仓库时就会自动安装或切换到正确的 Node.js 版本。
|
|
18
|
-
|
|
19
|
-
## 2. pnpm
|
|
20
|
-
|
|
21
|
-
推荐使用 [pnpm](https://pnpm.io/installation) 来管理项目依赖:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npm install -g pnpm
|
|
25
|
-
```
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 创建最简单的应用工程
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
## 开始创建
|
|
6
|
-
|
|
7
|
-
### 1. 创建项目根目录和源代码目录
|
|
8
|
-
|
|
9
|
-
我们创建名为 `hello-modern` 的项目:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
mkdir -p hello-modern/src
|
|
13
|
-
cd hello-modern
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
接下来都在项目根目录下执行命令。
|
|
17
|
-
|
|
18
|
-
### 2. 在 src 目录下,创建 App.jsx
|
|
19
|
-
|
|
20
|
-
import Tabs from '@theme/Tabs';
|
|
21
|
-
import TabItem from '@theme/TabItem';
|
|
22
|
-
|
|
23
|
-
<Tabs>
|
|
24
|
-
<TabItem value="macOS" label="macOS" default>
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
touch src/App.jsx
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
</TabItem>
|
|
31
|
-
<TabItem value="Windows" label="Windows" >
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
ni src/App.jsx
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
</TabItem>
|
|
38
|
-
</Tabs>
|
|
39
|
-
|
|
40
|
-
在 App.jsx 里默认导出一个 React 组件,作为应用的根组件。
|
|
41
|
-
|
|
42
|
-
```js title="src/App.jsx"
|
|
43
|
-
export default function App() {
|
|
44
|
-
return <div>Hello World!</div>;
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### 3. 添加框架依赖
|
|
49
|
-
|
|
50
|
-
在项目根目录下创建 `package.json`:
|
|
51
|
-
|
|
52
|
-
<Tabs>
|
|
53
|
-
<TabItem value="macOS" label="macOS" default>
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
touch package.json
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
</TabItem>
|
|
60
|
-
<TabItem value="Windows" label="Windows">
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
ni package.json
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
</TabItem>
|
|
67
|
-
</Tabs>
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
复制以下内容到文件里:
|
|
71
|
-
```json
|
|
72
|
-
{
|
|
73
|
-
"name": "hello-modern",
|
|
74
|
-
"scripts": {},
|
|
75
|
-
"dependencies": {
|
|
76
|
-
"react": "^17",
|
|
77
|
-
"react-dom": "^17",
|
|
78
|
-
"@modern-js/runtime": "^1.0.0"
|
|
79
|
-
},
|
|
80
|
-
"devDependencies": {
|
|
81
|
-
"@modern-js/app-tools": "^1.0.0"
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### 4. 添加框架命令
|
|
87
|
-
|
|
88
|
-
添加本章节要用的 3 个命令到 `package.json` 的 npm scripts 里:
|
|
89
|
-
|
|
90
|
-
```json
|
|
91
|
-
"scripts": {
|
|
92
|
-
"new": "modern new",
|
|
93
|
-
"dev": "modern dev",
|
|
94
|
-
"build": "modern build",
|
|
95
|
-
"start": "modern start"
|
|
96
|
-
},
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## 创建完成
|
|
100
|
-
|
|
101
|
-
一个基于 Modern.js 框架的应用工程,到这里就已经创建完成了。
|
|
102
|
-
|
|
103
|
-
目录结构如下:
|
|
104
|
-
|
|
105
|
-
```md
|
|
106
|
-
.
|
|
107
|
-
├── src/
|
|
108
|
-
│ └── App.jsx
|
|
109
|
-
└── package.json
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
可以看到,由于 Modern.js 框架的**默认零配置、约定优于配置、开箱即用、避免样板文件、Universal App** 等设计,即使不借助任何脚手架、生成器、项目模板等工具,纯手动搭建一个项目,整个过程也是极其简单的。
|
|
113
|
-
|
|
114
|
-
## 安装依赖
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
pnpm install
|
|
118
|
-
```
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 调试项目
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
我们已经创建了一个最简单的应用工程,接下来执行 `pnpm run dev` 命令进入开发调试:
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
pnpm run dev
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
执行后,控制台出现以下提示:
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
App running at:
|
|
15
|
-
|
|
16
|
-
> Local: http://localhost:8080/
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
访问运行结果中的 URL 可以看到应用工程的运行效果:
|
|
20
|
-
|
|
21
|
-

|
|
22
|
-
|
|
23
|
-
:::info 注
|
|
24
|
-
在 iTerm2 这样的现代终端里,按住 CMD/Alt 键,上面的 URL 会显示为链接,可以点击访问。
|
|
25
|
-
:::
|
|
26
|
-
|
|
27
|
-
保持命令继续运行,修改 `src/App.jsx`,把 Hello World 改成 Hello Modern.js。
|
|
28
|
-
|
|
29
|
-
因为框架默认支持 [HMR](https://webpack.js.org/concepts/hot-module-replacement/),可以看到 `http://localhost:8080/` 里的内容会自动变成 Hello Modern.js。
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 启用 SSR
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
上一小节我们学习了如何使用 Modern.js 调试项目,本小节我们将学习如何快速开启 SSR(服务端渲染)。
|
|
6
|
-
|
|
7
|
-
在项目根目录下创建 `modern.config.js`:
|
|
8
|
-
|
|
9
|
-
<Tabs>
|
|
10
|
-
<TabItem value="macOS" label="macOS" default>
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
touch modern.config.js
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
</TabItem>
|
|
17
|
-
<TabItem value="Windows" label="Windows">
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
ni modern.config.js
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
</TabItem>
|
|
24
|
-
</Tabs>
|
|
25
|
-
|
|
26
|
-
在 `modern.config.ts` 中添加如下配置:
|
|
27
|
-
|
|
28
|
-
```typescript title="modern.config.ts"
|
|
29
|
-
import { defineConfig } from '@modern-js/app-tools';
|
|
30
|
-
|
|
31
|
-
export default defineConfig({
|
|
32
|
-
server: {
|
|
33
|
-
ssr: true,
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
这样项目的 SSR 就已经开启了,重新执行 `pnpm run dev` 看看效果吧。
|
|
39
|
-
|
|
40
|
-
用 Chrome 打开 `view-source:http://localhost:8080/`,查看 HTML 文件源代码,可以看到 root 根元素下存在已经在服务器端渲染好的 HTML。
|
|
41
|
-
|
|
42
|
-
:::info 注
|
|
43
|
-
Modern.js 框架使用 SSR 不需要自建 Web Server,开发者可以专注于 App 的开发。
|
|
44
|
-
:::
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 运行项目
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
`dev` 命令只是专用于开发环境中的调试运行。要正式(生产环境水平)的运行项目,可以先后运行 `build` 和 `start` 命令:
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
pnpm run build
|
|
9
|
-
pnpm run start
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
用 Chrome 打开 `view-source:http://localhost:8080/`,查看 HTML 文件源代码,可以看到 HTML 本身和所有静态文件都符合生产环境标准。
|
|
13
|
-
|
|
14
|
-
:::info 注
|
|
15
|
-
基于 Modern.js 框架的项目,不需要借助其他服务器(比如 Nginx),可以直接运行。
|
|
16
|
-
|
|
17
|
-
由于在任意机器、实例或容器上都能等价的运行,所以在本地机器上就能及时发现和调试线上环境中的很多问题。
|
|
18
|
-
:::
|