@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,168 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 1
|
3
|
+
---
|
4
|
+
|
5
|
+
# 依赖安装问题
|
6
|
+
|
7
|
+
### 如何升级项目中的 Modern.js 到最新版本?
|
8
|
+
|
9
|
+
对于使用 yarn 的项目,可以执行:
|
10
|
+
|
11
|
+
```bash
|
12
|
+
yarn upgrade --scope @modern-js
|
13
|
+
```
|
14
|
+
|
15
|
+
对于使用 pnpm 的项目,可以执行:
|
16
|
+
|
17
|
+
```bash
|
18
|
+
pnpm update "@modern-js/*" -r
|
19
|
+
```
|
20
|
+
|
21
|
+
如果需要了解不同版本之间的更新内容,可以查看:
|
22
|
+
|
23
|
+
- Modern.js 发版日志:[Modern.js/releases](https://github.com/modern-js-dev/modern.js/releases)。
|
24
|
+
- 各个 package 下的 `CHANGELOG.md` 文件。
|
25
|
+
|
26
|
+
---
|
27
|
+
|
28
|
+
### 如何锁定项目中的某个依赖版本?
|
29
|
+
|
30
|
+
如果需要锁定项目中的某个依赖的版本,可以通过以下方式进行操作:
|
31
|
+
|
32
|
+
**yarn**
|
33
|
+
|
34
|
+
对于使用 yarn 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `yarn`:
|
35
|
+
|
36
|
+
```json
|
37
|
+
{
|
38
|
+
"resolutions": {
|
39
|
+
"package-name": "^1.0.0"
|
40
|
+
}
|
41
|
+
}
|
42
|
+
```
|
43
|
+
|
44
|
+
**pnpm**
|
45
|
+
|
46
|
+
对于使用 pnpm 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `pnpm i`:
|
47
|
+
|
48
|
+
```json
|
49
|
+
{
|
50
|
+
"pnpm": {
|
51
|
+
"overrides": {
|
52
|
+
"package-name": "^1.0.0"
|
53
|
+
}
|
54
|
+
}
|
55
|
+
}
|
56
|
+
```
|
57
|
+
|
58
|
+
**npm**
|
59
|
+
|
60
|
+
对于使用 npm 的项目,请在**项目根目录**的 `package.json` 中添加以下配置,然后重新执行 `npm i`:
|
61
|
+
|
62
|
+
```json
|
63
|
+
{
|
64
|
+
"overrides": {
|
65
|
+
"package-name": "^1.0.0"
|
66
|
+
}
|
67
|
+
}
|
68
|
+
```
|
69
|
+
|
70
|
+
:::info
|
71
|
+
对于 monorepo 场景,只能在项目根目录的 `package.json` 中锁定依赖版本,并且会影响 monorepo 中的所有 package。
|
72
|
+
:::
|
73
|
+
|
74
|
+
---
|
75
|
+
|
76
|
+
### 如何查看项目里某个依赖实际安装的版本?
|
77
|
+
|
78
|
+
可以使用包管理器自带的 `ls` 命令来查看项目里依赖的版本。
|
79
|
+
|
80
|
+
下面是一些基本的示例,详细用法请查看各个包管理器的文档。
|
81
|
+
|
82
|
+
**npm / yarn**
|
83
|
+
|
84
|
+
对于使用 npm 或 yarn 的项目,可以使用 `npm ls` 命令。
|
85
|
+
|
86
|
+
比如执行 `npm ls @modern-js/core`,可以看到如下结果:
|
87
|
+
|
88
|
+
```
|
89
|
+
project
|
90
|
+
└─┬ @modern-js/app-tools@1.6.10
|
91
|
+
└── @modern-js/core@1.12.4
|
92
|
+
```
|
93
|
+
|
94
|
+
**pnpm**
|
95
|
+
|
96
|
+
对于使用 pnpm 的项目,可以使用 `pnpm ls` 命令。
|
97
|
+
|
98
|
+
比如执行 `pnpm ls @modern-js/core --depth Infinity`,可以看到如下结果:
|
99
|
+
|
100
|
+
```
|
101
|
+
devDependencies:
|
102
|
+
@modern-js/app-tools 1.7.0
|
103
|
+
└── @modern-js/core 1.13.0
|
104
|
+
```
|
105
|
+
|
106
|
+
---
|
107
|
+
|
108
|
+
### 安装依赖时提示 The engine "node" is incompatible?
|
109
|
+
|
110
|
+
安装依赖时如果出现以下报错提示,说明当前环境使用的 Node.js 版本过低,需要升级 Node.js 到更高版本。
|
111
|
+
|
112
|
+
```bash
|
113
|
+
The engine "node" is incompatible with this module.
|
114
|
+
|
115
|
+
Expected version ">=14.17.6". Got "12.20.1"
|
116
|
+
```
|
117
|
+
|
118
|
+
使用 Modern.js 时,建议使用 [Node.js 14.x](https://nodejs.org/download/release/latest-v14.x/) 或 [Node.js 16.x](https://nodejs.org/download/release/latest-v16.x/) 的最新版本。
|
119
|
+
|
120
|
+
如果当前环境的 Node.js 版本低于上述要求的版本,则可以使用 [nvm](https://github.com/nvm-sh/nvm) 或 [fnm](https://github.com/Schniz/fnm) 等工具进行版本切换。
|
121
|
+
|
122
|
+
下面是使用 nvm 的示例:
|
123
|
+
|
124
|
+
```
|
125
|
+
# 安装 Node.js v14
|
126
|
+
nvm install 14
|
127
|
+
|
128
|
+
# 切换到 Node 14
|
129
|
+
nvm use 14
|
130
|
+
|
131
|
+
# 将 Node 14 设置为默认版本
|
132
|
+
nvm default 14
|
133
|
+
```
|
134
|
+
|
135
|
+
在本地开发环境推荐使用 [fnm](https://github.com/Schniz/fnm),它的用法与 nvm 相似,但拥有比 nvm 更好的性能。
|
136
|
+
|
137
|
+
---
|
138
|
+
|
139
|
+
### 升级依赖后出现 ReactNode 类型错误?
|
140
|
+
|
141
|
+
升级项目的依赖后,如果出现以下类型报错,说明项目中安装了错误的 `@types/react` 版本。
|
142
|
+
|
143
|
+
```bash
|
144
|
+
The types returned by 'render()' are incompatible between these types.
|
145
|
+
Type 'React.ReactNode' is not assignable to type 'import("/node_modules/@types/react/index").ReactNode'.
|
146
|
+
Type '{}' is not assignable to type 'ReactNode'.
|
147
|
+
```
|
148
|
+
|
149
|
+
出现这个问题的原因是 React 18 与 React 16/17 中的 ReactNode 类型定义不同,如果项目中出现多个不同 `@types/react` 版本,就会出现 ReactNode 类型冲突,导致以上报错。
|
150
|
+
|
151
|
+
解决方法为将项目中的 `@types/react` 和 `@types/react-dom` 锁定在统一的版本上,比如 `v17`。
|
152
|
+
|
153
|
+
```json
|
154
|
+
{
|
155
|
+
"@types/react": "^17",
|
156
|
+
"@types/react-dom": "^17"
|
157
|
+
}
|
158
|
+
```
|
159
|
+
|
160
|
+
关于锁定依赖版本的方法,请参考上方的 `如何锁定项目中的某个依赖版本?`。
|
161
|
+
|
162
|
+
---
|
163
|
+
|
164
|
+
### 执行 pnpm install 之后,控制台出现 peer dependencies 相关 warning?
|
165
|
+
|
166
|
+
出现该警告的原因是,某些三方 npm 包声明的 peer dependencies 版本范围与 Modern.js 中安装的版本范围不一致。
|
167
|
+
|
168
|
+
绝大多数情况下,peer dependencies 的警告不会影响项目运行,不需要额外进行处理,请忽略相关 warning。
|
@@ -0,0 +1,25 @@
|
|
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.17.6。
|
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/erbium` 的 `.nvmrc` 文件,进入这个仓库时就会自动安装或切换到正确的 Node.js 版本。
|
18
|
+
|
19
|
+
## 2. pnpm
|
20
|
+
|
21
|
+
推荐使用 [pnpm](https://pnpm.io/installation) 来管理项目依赖:
|
22
|
+
|
23
|
+
```bash
|
24
|
+
npm install -g pnpm
|
25
|
+
```
|
@@ -0,0 +1,118 @@
|
|
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
|
+
```
|
@@ -0,0 +1,29 @@
|
|
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。
|
@@ -0,0 +1,44 @@
|
|
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.js` 中添加如下配置:
|
27
|
+
|
28
|
+
```js title="modern.config.js"
|
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
|
+
:::
|
@@ -0,0 +1,18 @@
|
|
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
|
+
:::
|
@@ -0,0 +1,31 @@
|
|
1
|
+
---
|
2
|
+
title: 创建 Git 仓库
|
3
|
+
---
|
4
|
+
|
5
|
+
经过以上操作,现在项目的目录结构变成了这样:
|
6
|
+
|
7
|
+
```md
|
8
|
+
.
|
9
|
+
├── node_modules/
|
10
|
+
├── dist/
|
11
|
+
├── src/
|
12
|
+
│ └── App.jsx
|
13
|
+
├── package.json
|
14
|
+
└── pnpm-lock.yaml
|
15
|
+
```
|
16
|
+
|
17
|
+
`dist` 和 `log` 都是框架生成的构建产物和运行产物,不应该进入仓库索引,需要在项目根目录下添加一个 `.gitignore`,内容:
|
18
|
+
|
19
|
+
```txt
|
20
|
+
node_modules/
|
21
|
+
dist/
|
22
|
+
*.log*
|
23
|
+
```
|
24
|
+
|
25
|
+
然后可以执行 `git init` 等命令创建仓库。
|
26
|
+
|
27
|
+
虽然手动创建一个 Modern.js 项目也很简单,但如果用 Modern.js 开发套件提供的工具,自动创建项目还可以更方便,并且获得更多开箱即用的最佳实践(比如上面的 .gitignore 等等)。
|
28
|
+
|
29
|
+
---
|
30
|
+
|
31
|
+
> 本章节的代码可以在[这里查看](https://github.com/modern-js-dev/modern-js-examples/tree/main/tutorials/c01/hello-modern)。
|
@@ -0,0 +1,87 @@
|
|
1
|
+
---
|
2
|
+
title: 用命令行工具创建项目
|
3
|
+
---
|
4
|
+
|
5
|
+
上一章节中,我们介绍了如何手动创建一个 Modern.js 应用工程。
|
6
|
+
|
7
|
+
这一章节中,我们将会学习使用命令行工具,更方便的创建。
|
8
|
+
|
9
|
+
可以用已存在的空目录来创建项目:
|
10
|
+
|
11
|
+
```bash
|
12
|
+
mkdir hello-modern
|
13
|
+
|
14
|
+
cd hello-modern
|
15
|
+
|
16
|
+
npx @modern-js/create
|
17
|
+
```
|
18
|
+
|
19
|
+
也可以用新目录来创建项目:
|
20
|
+
|
21
|
+
```bash
|
22
|
+
npx @modern-js/create hello-modern
|
23
|
+
|
24
|
+
cd hello-modern
|
25
|
+
```
|
26
|
+
|
27
|
+
`@modern-js/create` 是 Modern.js 生成器。不要全局安装 `@modern-js/create`,用 npx 按需运行,可以始终运行最新版。
|
28
|
+
|
29
|
+
生成器会提供一个可交互的问答界面,根据后续的问答结果,按需运行不同的【 微生成器(micro-generator)】,在生成项目之后也会自动安装依赖、创建 git 仓库。
|
30
|
+
|
31
|
+
:::info 微生成器(micro-generator)
|
32
|
+
|
33
|
+
传统脚手架通常提供整个项目级别的生成器,基于模板,一用即抛,生成完项目之后,对后续的业务迭代没有帮助。
|
34
|
+
|
35
|
+
微生成器关注的是项目的整个生命周期,既可以生成项目中各种粒度各种类型的文件模块(比如教程后面会提到的 entry、component、model 等),也可以生成抽象的业务逻辑(可能不创建新文件,而是在现有文件上做自动重构)。微生成器不是只在最初创建项目的时候使用的一次性工具,而是伴随项目后续迭代过程的工具箱。Modern.js 也可以支持业务项目添加自己业务专用的微生成器。
|
36
|
+
|
37
|
+
Modern.js 生成器是基于微生成器和应用工程(Universal App,不需要多套模板)的项目生成器,会在问答过程中,按需加载不同的微生成器,动态生成不同的初始文件和代码或修改重组已有的文件和代码。在这种模式下,业务开发者可以方便地对 Modern.js 生成器进行定制,实现个性化的业务工程方案生成器。
|
38
|
+
:::
|
39
|
+
|
40
|
+
### 初始化项目
|
41
|
+
|
42
|
+
Modern.js 生成器会通过交互式的问题获取一些必要信息,动态生成最合适的项目内容,我们先按以下选择创建:
|
43
|
+
|
44
|
+
```bash
|
45
|
+
# 请选择你想创建的工程类型
|
46
|
+
❯ 应用
|
47
|
+
模块
|
48
|
+
Monorepo
|
49
|
+
|
50
|
+
# 请选择开发语言
|
51
|
+
TS
|
52
|
+
❯ ES6+
|
53
|
+
|
54
|
+
# 请选择包管理工具
|
55
|
+
❯ pnpm
|
56
|
+
Yarn
|
57
|
+
|
58
|
+
# 是否需要支持以下类型应用
|
59
|
+
❯ 不需要
|
60
|
+
Electron
|
61
|
+
|
62
|
+
# 是否需要调整默认配置
|
63
|
+
❯ 否
|
64
|
+
是
|
65
|
+
```
|
66
|
+
|
67
|
+
项目生成后,在项目根目录执行 `pnpm run dev` 就可以直接进行调试了:
|
68
|
+
|
69
|
+

|
70
|
+
|
71
|
+
### 扩展项目
|
72
|
+
|
73
|
+
如上所述,微生成器是伴随项目后续迭代过程中的工具箱,可以使用 `pnpm run new` 在需要的时候来扩展项目。
|
74
|
+
|
75
|
+
执行 `pnpm run new` 后,我们按照以下选择,开启可选的 Tailwind CSS 支持:
|
76
|
+
|
77
|
+
```bash
|
78
|
+
# 请选择你想要的操作
|
79
|
+
创建工程元素
|
80
|
+
❯ 启用可选功能
|
81
|
+
|
82
|
+
# 启用可选功能
|
83
|
+
❯ 启用 Tailwind CSS 支持
|
84
|
+
...
|
85
|
+
```
|
86
|
+
|
87
|
+
选择 **启用 Tailwind CSS 支持**,等待命令运行结束,可以看到在 `package.json` 中新增了 `@modern-js/plugin-tailwindcss` 依赖,并且依赖已经完成安装。
|
@@ -0,0 +1,28 @@
|
|
1
|
+
---
|
2
|
+
title: 样板文件
|
3
|
+
---
|
4
|
+
|
5
|
+
生成的项目结构:
|
6
|
+
|
7
|
+
```md
|
8
|
+
.
|
9
|
+
├── .vscode/
|
10
|
+
├── src/
|
11
|
+
│ ├── .eslintrc.json
|
12
|
+
│ ├── App.css
|
13
|
+
│ └── App.jsx
|
14
|
+
├── .editorconfig
|
15
|
+
├── .gitignore
|
16
|
+
├── .npmrc
|
17
|
+
├── .nvmrc
|
18
|
+
├── README.md
|
19
|
+
├── package.json
|
20
|
+
└── pnpm-lock.yaml
|
21
|
+
```
|
22
|
+
|
23
|
+
和上一章节手动创建出来的项目一样,仍然是零配置、极简和轻量的,但功能更完整,最佳实践开箱即用,比如:
|
24
|
+
|
25
|
+
1. 提供了 IDE 相关支持,下一节会详细介绍。
|
26
|
+
2. 集成了 Modern.js Lint 规则集,按照最佳实践启用,省去很多配置工作。
|
27
|
+
3. 声明了 Node.js 版本。如果你按照[上一节的推荐](../c01-getting-started/1.1-prerequisites.md),在系统里启用了[自动切换 node 版本的脚本](https://github.com/nvm-sh/nvm#automatically-call-nvm-use),进入项目目录时,nvm 会自动安装和切换到项目声明的 Node.js 版本。
|
28
|
+
4. 包含 Modern.js 框架的全套命令。
|
@@ -0,0 +1,21 @@
|
|
1
|
+
---
|
2
|
+
title: 配置项目
|
3
|
+
---
|
4
|
+
|
5
|
+
通过命令行工具创建的 Modern.js 项目,在 `package.json` 文件中,存在 `modernConfig` 字段。
|
6
|
+
|
7
|
+
我们也可以创建 `modern.config.js` 配置文件。
|
8
|
+
|
9
|
+
这两处都可以进行 Modern.js 项目的配置,并且 `modernConfig` 字段中的配置优先级高于 `modern.config.js` 中相同的内容。
|
10
|
+
|
11
|
+
:::info 注
|
12
|
+
|
13
|
+
如果配置为函数,则必须使用 `modern.config.js`。
|
14
|
+
|
15
|
+
:::
|
16
|
+
|
17
|
+
我们可以在 `modernConfig` 或 `modern.config.js` 中配置诸如 Server Port、Document 元信息、Webpack 选项等。
|
18
|
+
|
19
|
+
---
|
20
|
+
|
21
|
+
> 本章节的代码可以在[这里查看](https://github.com/modern-js-dev/modern-js-examples/tree/main/tutorials/c02/hello-modern)。
|
@@ -0,0 +1,55 @@
|
|
1
|
+
---
|
2
|
+
title: 初始化 IDE
|
3
|
+
---
|
4
|
+
|
5
|
+
上一章节中,我们已经创建了一个新的 Modern.js 应用工程。
|
6
|
+
|
7
|
+
在开始写代码之前,我们将会在这一章节里先确认 IDE 相关功能。
|
8
|
+
|
9
|
+
Modern.js 框架默认提供了对 VS Code 和 WebStorm 的支持,本章以 VS Code 为例。
|
10
|
+
|
11
|
+
## 用 VS Code 打开项目根目录
|
12
|
+
|
13
|
+
```bash
|
14
|
+
cd hello-modern/
|
15
|
+
code .
|
16
|
+
```
|
17
|
+
|
18
|
+

|
19
|
+
|
20
|
+
:::info 补充信息
|
21
|
+
必须打开项目根目录,不能打开其他子目录或父目录,否则 IDE 支持不会生效。
|
22
|
+
:::
|
23
|
+
|
24
|
+
## 安装插件
|
25
|
+
|
26
|
+
点击左侧栏上的插件(Extensions)面板,过滤 `@recommended` 列表,可以看到这里分为工作区推荐插件(Workspace Recommendations)和其他推荐插件(Other Recommendations)。
|
27
|
+
|
28
|
+

|
29
|
+
|
30
|
+
点击工作区推荐插件顶部的下载按钮,安装当前仓库推荐的(也就是 Modern.js 框架推荐的)所有 VS Code 插件,等待全部安装成功,重启 VS Code 让插件生效。
|
31
|
+
|
32
|
+
如果 VS Code 弹出这个确认框,点击 Allow 即可:
|
33
|
+
|
34
|
+

|
35
|
+
|
36
|
+
也可以检查 VS Code 底栏右侧显示的 ESLint 状态,或 VS Code 的 Problem 面板,比如如果有下面这样的提示:
|
37
|
+
|
38
|
+

|
39
|
+
|
40
|
+
点击底栏上的 ESLint 就会弹出上面的对话框。
|
41
|
+
|
42
|
+
到这里,不需要做任何配置,IDE 就已经准备就绪,可以开始写代码了。
|
43
|
+
|
44
|
+
:::info 注
|
45
|
+
这些 VS Code 插件不会影响性能,如果实在不想一键安装所有插件,至少要安装以下插件:
|
46
|
+
|
47
|
+
- editorconfig
|
48
|
+
- eslint
|
49
|
+
- vscode-styled-components
|
50
|
+
- language-postcss
|
51
|
+
- eslint-disable-snippets
|
52
|
+
:::
|
53
|
+
|
54
|
+
本章节接下来的步骤,也起到检查 IDE 功能的作用,任一步骤不符合描述,都说明有问题。
|
55
|
+
|