@nx/react 0.0.0-pr-31222-862e973 → 0.0.0-pr-31313-387cdca
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/LICENSE +1 -1
- package/README.md +1 -1
- package/generators.json +9 -13
- package/index.d.ts +1 -2
- package/index.js +2 -5
- package/mf/dynamic-federation.d.ts +64 -0
- package/mf/dynamic-federation.js +64 -0
- package/migrations.json +80 -148
- package/module-federation.d.ts +6 -4
- package/module-federation.js +16 -7
- package/package.json +11 -11
- package/plugins/bundle-rollup.js +4 -1
- package/plugins/component-testing/index.js +1 -1
- package/plugins/jest.js +6 -11
- package/plugins/nx-react-webpack-plugin/lib/apply-react-config.js +6 -22
- package/plugins/storybook/index.js +1 -2
- package/plugins/with-react.d.ts +4 -0
- package/router-plugin.d.ts +1 -0
- package/router-plugin.js +5 -0
- package/src/executors/module-federation-dev-server/lib/index.d.ts +2 -0
- package/src/executors/module-federation-dev-server/lib/index.js +5 -0
- package/src/executors/module-federation-dev-server/lib/normalize-options.d.ts +4 -0
- package/src/executors/module-federation-dev-server/lib/normalize-options.js +19 -0
- package/src/executors/module-federation-dev-server/lib/start-remotes.d.ts +5 -0
- package/src/executors/module-federation-dev-server/lib/start-remotes.js +33 -0
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +1 -1
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +6 -110
- package/src/executors/module-federation-dev-server/schema.d.ts +9 -7
- package/src/executors/module-federation-dev-server/schema.json +15 -10
- package/src/executors/module-federation-ssr-dev-server/lib/index.d.ts +2 -0
- package/src/executors/module-federation-ssr-dev-server/lib/index.js +5 -0
- package/src/executors/module-federation-ssr-dev-server/lib/normalize-options.d.ts +4 -0
- package/src/executors/module-federation-ssr-dev-server/lib/normalize-options.js +23 -0
- package/src/executors/module-federation-ssr-dev-server/lib/start-remotes.d.ts +5 -0
- package/src/executors/module-federation-ssr-dev-server/lib/start-remotes.js +34 -0
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts +1 -17
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +5 -153
- package/src/executors/module-federation-ssr-dev-server/schema.d.ts +29 -0
- package/src/executors/module-federation-ssr-dev-server/schema.json +14 -9
- package/src/executors/module-federation-static-server/module-federation-static-server.impl.d.ts +2 -2
- package/src/executors/module-federation-static-server/module-federation-static-server.impl.js +11 -12
- package/src/executors/module-federation-static-server/schema.json +2 -1
- package/src/generators/application/application.d.ts +3 -3
- package/src/generators/application/application.js +108 -186
- package/src/generators/application/files/base-rsbuild/src/app/__fileName__.spec.tsx__tmpl__ +10 -0
- package/src/generators/application/files/base-rsbuild/src/assets/.gitkeep +0 -0
- package/src/generators/application/files/base-rsbuild/src/favicon.ico +0 -0
- package/src/generators/application/files/base-rsbuild/src/index.html +14 -0
- package/src/generators/application/files/base-rsbuild/src/main.tsx__tmpl__ +32 -0
- package/src/generators/application/files/base-rsbuild/tsconfig.app.json__tmpl__ +31 -0
- package/src/generators/application/files/base-rspack/rspack.config.js__tmpl__ +53 -0
- package/src/generators/application/files/base-rspack/src/app/__fileName__.spec.tsx__tmpl__ +3 -3
- package/src/generators/application/files/base-rspack/src/main.tsx__tmpl__ +27 -5
- package/src/generators/application/files/base-rspack/tsconfig.app.json__tmpl__ +21 -4
- package/src/generators/application/files/base-vite/src/app/__fileName__.spec.tsx__tmpl__ +3 -3
- package/src/generators/application/files/base-vite/src/main.tsx__tmpl__ +31 -6
- package/src/generators/application/files/base-vite/tsconfig.app.json__tmpl__ +20 -3
- package/src/generators/application/files/base-webpack/src/app/__fileName__.spec.tsx__tmpl__ +3 -3
- package/src/generators/application/files/base-webpack/src/main.tsx__tmpl__ +22 -2
- package/src/generators/application/files/base-webpack/tsconfig.app.json__tmpl__ +21 -4
- package/src/generators/application/files/base-webpack/webpack.config.js__tmpl__ +4 -4
- package/src/generators/application/files/react-router-ssr/common/app/app-nav.tsx__tmpl__ +14 -0
- package/src/generators/application/files/react-router-ssr/common/app/entry.client.tsx__tmpl__ +18 -0
- package/src/generators/application/files/react-router-ssr/common/app/entry.server.tsx__tmpl__ +74 -0
- package/src/generators/application/files/react-router-ssr/common/app/root.tsx__tmpl__ +51 -0
- package/src/generators/application/files/react-router-ssr/common/app/routes/about.tsx__tmpl__ +7 -0
- package/src/generators/application/files/react-router-ssr/common/app/routes.tsx__tmpl__ +6 -0
- package/src/generators/application/files/react-router-ssr/common/public/favicon.ico +0 -0
- package/src/generators/application/files/react-router-ssr/common/react-router.config.ts__tmpl__ +5 -0
- package/src/generators/application/files/react-router-ssr/common/tests/routes/_index.spec.tsx__tmpl__ +16 -0
- package/src/generators/application/files/react-router-ssr/common/tsconfig.app.json__tmpl__ +23 -0
- package/src/generators/application/files/react-router-ssr/common/tsconfig.json__tmpl__ +27 -0
- package/src/generators/application/files/react-router-ssr/non-root/.gitignore__tmpl__ +5 -0
- package/src/generators/application/files/react-router-ssr/non-root/package.json__tmpl__ +21 -0
- package/src/generators/application/files/react-router-ssr/nx-welcome/claimed/app/nx-welcome.tsx__tmpl__ +866 -0
- package/src/generators/application/files/react-router-ssr/nx-welcome/not-configured/app/nx-welcome.tsx__tmpl__ +866 -0
- package/src/generators/application/files/react-router-ssr/nx-welcome/unclaimed/app/nx-welcome.tsx__tmpl__ +864 -0
- package/src/generators/application/files/react-router-ssr/ts-solution/package.json__tmpl__ +21 -0
- package/src/generators/application/files/react-router-ssr/ts-solution/tsconfig.app.json__tmpl__ +39 -0
- package/src/generators/application/files/style-css-module/src/app/__fileName__.tsx__tmpl__ +28 -18
- package/src/generators/application/files/style-global-css/src/app/__fileName__.tsx__tmpl__ +29 -20
- package/src/generators/application/files/style-none/src/app/__fileName__.tsx__tmpl__ +26 -16
- package/src/generators/application/files/style-styled-jsx/src/app/__fileName__.tsx__tmpl__ +31 -22
- package/src/generators/application/files/style-styled-module/src/app/__fileName__.tsx__tmpl__ +30 -21
- package/src/generators/application/files/style-tailwind/src/app/__fileName__.tsx__tmpl__ +29 -19
- package/src/generators/application/lib/add-e2e.d.ts +1 -1
- package/src/generators/application/lib/add-e2e.js +74 -65
- package/src/generators/application/lib/add-jest.js +27 -2
- package/src/generators/application/lib/add-linting.d.ts +4 -0
- package/src/generators/application/lib/add-linting.js +86 -0
- package/src/generators/application/lib/add-project.js +112 -6
- package/src/generators/application/lib/add-routing.js +1 -1
- package/src/generators/application/lib/bundlers/add-rsbuild.d.ts +4 -0
- package/src/generators/application/lib/bundlers/add-rsbuild.js +63 -0
- package/src/generators/application/lib/bundlers/add-rspack.d.ts +4 -0
- package/src/generators/application/lib/bundlers/add-rspack.js +37 -0
- package/src/generators/application/lib/bundlers/add-vite.d.ts +4 -0
- package/src/generators/application/lib/bundlers/add-vite.js +76 -0
- package/src/generators/application/lib/bundlers/add-webpack.d.ts +3 -0
- package/src/generators/application/lib/bundlers/add-webpack.js +18 -0
- package/src/generators/application/lib/create-application-files.d.ts +61 -0
- package/src/generators/application/lib/create-application-files.js +102 -19
- package/src/generators/application/lib/get-app-tests.js +10 -11
- package/src/generators/application/lib/install-common-dependencies.d.ts +1 -1
- package/src/generators/application/lib/install-common-dependencies.js +18 -4
- package/src/generators/application/lib/normalize-options.d.ts +1 -3
- package/src/generators/application/lib/normalize-options.js +17 -19
- package/src/generators/application/lib/update-jest-config.js +5 -0
- package/src/generators/application/schema.d.ts +12 -6
- package/src/generators/application/schema.json +44 -42
- package/src/generators/component/component.d.ts +0 -1
- package/src/generators/component/component.js +19 -37
- package/src/generators/component/files/__fileName__.__ext__ +83 -0
- package/src/generators/component/lib/normalize-options.js +13 -15
- package/src/generators/component/schema.d.ts +13 -25
- package/src/generators/component/schema.json +13 -49
- package/src/generators/component-story/component-story.js +1 -2
- package/src/generators/component-story/files/jsx/__componentFileName__.stories.jsx__tmpl__ +5 -5
- package/src/generators/component-story/files/tsx/__componentFileName__.stories.tsx__tmpl__ +3 -4
- package/src/generators/component-test/component-test.js +1 -1
- package/src/generators/cypress-component-configuration/cypress-component-configuration.js +0 -2
- package/src/generators/cypress-component-configuration/lib/add-files.d.ts +1 -1
- package/src/generators/cypress-component-configuration/lib/add-files.js +7 -4
- package/src/generators/federate-module/federate-module.js +12 -22
- package/src/generators/federate-module/schema.d.ts +0 -1
- package/src/generators/federate-module/schema.json +13 -12
- package/src/generators/hook/files/{__fileName__.ts__tmpl__ → __fileName__.__ext__} +3 -1
- package/src/generators/hook/hook.d.ts +0 -1
- package/src/generators/hook/hook.js +35 -83
- package/src/generators/hook/schema.d.ts +4 -17
- package/src/generators/hook/schema.json +19 -46
- package/src/generators/host/files/common/src/app/__fileName__.js__tmpl__ +28 -21
- package/src/generators/host/files/common/src/main.js__tmpl__ +12 -9
- package/src/generators/host/files/common-ts/src/app/__fileName__.tsx__tmpl__ +28 -28
- package/src/generators/host/files/common-ts/src/main.ts__tmpl__ +12 -9
- package/src/generators/host/files/rspack-common/src/app/__fileName__.jsx__tmpl__ +22 -13
- package/src/generators/host/files/rspack-common/src/main.jsx__tmpl__ +12 -9
- package/src/generators/host/files/rspack-module-federation/module-federation.config.js__tmpl__ +8 -5
- package/src/generators/host/files/rspack-module-federation/rspack.config.js__tmpl__ +37 -13
- package/src/generators/host/files/rspack-module-federation/rspack.config.prod.js__tmpl__ +60 -30
- package/src/generators/host/files/rspack-module-federation-ssr/module-federation.server.config.js__tmpl__ +16 -5
- package/src/generators/host/files/rspack-module-federation-ssr/rspack.config.js__tmpl__ +66 -0
- package/src/generators/host/files/rspack-module-federation-ssr/server.ts__tmpl__ +1 -1
- package/src/generators/host/files/rspack-module-federation-ssr/src/main.server.tsx__tmpl__ +49 -0
- package/src/generators/host/files/rspack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +16 -7
- package/src/generators/host/files/rspack-module-federation-ssr-ts/rspack.config.ts__tmpl__ +66 -0
- package/src/generators/host/files/rspack-module-federation-ssr-ts/server.ts__tmpl__ +1 -1
- package/src/generators/host/files/rspack-module-federation-ssr-ts/src/main.server.tsx__tmpl__ +49 -0
- package/src/generators/host/files/rspack-module-federation-ts/module-federation.config.ts__tmpl__ +22 -19
- package/src/generators/host/files/rspack-module-federation-ts/rspack.config.prod.ts__tmpl__ +61 -30
- package/src/generators/host/files/rspack-module-federation-ts/rspack.config.ts__tmpl__ +37 -13
- package/src/generators/host/files/webpack-module-federation/module-federation.config.js__tmpl__ +8 -5
- package/src/generators/host/files/webpack-module-federation/webpack.config.js__tmpl__ +1 -1
- package/src/generators/host/files/webpack-module-federation/webpack.config.prod.js__tmpl__ +24 -22
- package/src/generators/host/files/webpack-module-federation-ssr/module-federation.server.config.js__tmpl__ +10 -7
- package/src/generators/host/files/webpack-module-federation-ssr/webpack.server.config.js__tmpl__ +2 -2
- package/src/generators/host/files/webpack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +10 -7
- package/src/generators/host/files/webpack-module-federation-ssr-ts/webpack.server.config.ts__tmpl__ +2 -2
- package/src/generators/host/files/webpack-module-federation-ts/module-federation.config.ts__tmpl__ +22 -19
- package/src/generators/host/files/webpack-module-federation-ts/webpack.config.prod.ts__tmpl__ +25 -23
- package/src/generators/host/files/webpack-module-federation-ts/webpack.config.ts__tmpl__ +4 -3
- package/src/generators/host/host.d.ts +0 -1
- package/src/generators/host/host.js +31 -27
- package/src/generators/host/lib/add-module-federation-files.js +29 -13
- package/src/generators/host/lib/normalize-host-name.d.ts +2 -0
- package/src/generators/host/lib/normalize-host-name.js +12 -0
- package/src/generators/host/lib/normalize-remote.js +10 -6
- package/src/generators/host/lib/setup-ssr-for-host.d.ts +3 -3
- package/src/generators/host/lib/setup-ssr-for-host.js +46 -22
- package/src/generators/host/lib/update-module-federation-tsconfig.d.ts +3 -0
- package/src/generators/host/lib/update-module-federation-tsconfig.js +39 -0
- package/src/generators/host/schema.d.ts +2 -5
- package/src/generators/host/schema.json +16 -27
- package/src/generators/init/init.d.ts +1 -1
- package/src/generators/init/init.js +31 -6
- package/src/generators/init/schema.d.ts +2 -0
- package/src/generators/library/files/common/tsconfig.lib.json__tmpl__ +1 -1
- package/src/generators/library/files/vite/tsconfig.lib.json__tmpl__ +1 -1
- package/src/generators/library/lib/add-linting.js +1 -1
- package/src/generators/library/lib/add-rollup-build-target.d.ts +3 -1
- package/src/generators/library/lib/add-rollup-build-target.js +34 -32
- package/src/generators/library/lib/create-files.d.ts +1 -1
- package/src/generators/library/lib/create-files.js +23 -2
- package/src/generators/library/lib/determine-entry-fields.d.ts +3 -0
- package/src/generators/library/lib/determine-entry-fields.js +22 -0
- package/src/generators/library/lib/install-common-dependencies.d.ts +1 -1
- package/src/generators/library/lib/install-common-dependencies.js +5 -3
- package/src/generators/library/lib/normalize-options.js +11 -6
- package/src/generators/library/library.js +80 -35
- package/src/generators/library/schema.d.ts +5 -5
- package/src/generators/library/schema.json +38 -36
- package/src/generators/redux/files/js/__fileName__.__ext__ +114 -0
- package/src/generators/redux/files/{__fileName__.slice.spec.ts__tmpl__ → js/__fileName__.spec.__ext__} +1 -1
- package/src/generators/redux/files/ts/__fileName__.spec.__ext__ +56 -0
- package/src/generators/redux/redux.d.ts +0 -1
- package/src/generators/redux/redux.js +27 -36
- package/src/generators/redux/schema.d.ts +12 -8
- package/src/generators/redux/schema.json +21 -23
- package/src/generators/remote/files/rspack-module-federation/module-federation.config.js__tmpl__ +10 -7
- package/src/generators/remote/files/rspack-module-federation/rspack.config.js__tmpl__ +40 -13
- package/src/generators/remote/files/rspack-module-federation-ssr/module-federation.server.config.js__tmpl__ +13 -4
- package/src/generators/remote/files/rspack-module-federation-ssr/rspack.config.js__tmpl__ +69 -0
- package/src/generators/remote/files/rspack-module-federation-ssr/server.ts__tmpl__ +2 -2
- package/src/generators/remote/files/rspack-module-federation-ssr/src/main.server.tsx__tmpl__ +45 -0
- package/src/generators/remote/files/rspack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +13 -4
- package/src/generators/remote/files/rspack-module-federation-ssr-ts/rspack.config.ts__tmpl__ +69 -0
- package/src/generators/remote/files/rspack-module-federation-ssr-ts/server.ts__tmpl__ +2 -2
- package/src/generators/remote/files/rspack-module-federation-ssr-ts/src/main.server.tsx__tmpl__ +45 -0
- package/src/generators/remote/files/rspack-module-federation-ts/module-federation.config.ts__tmpl__ +11 -8
- package/src/generators/remote/files/rspack-module-federation-ts/rspack.config.ts__tmpl__ +40 -13
- package/src/generators/remote/files/webpack-module-federation/module-federation.config.js__tmpl__ +10 -7
- package/src/generators/remote/files/webpack-module-federation/webpack.config.js__tmpl__ +1 -1
- package/src/generators/remote/files/webpack-module-federation-ssr/module-federation.server.config.js__tmpl__ +7 -4
- package/src/generators/remote/files/webpack-module-federation-ssr/webpack.server.config.js__tmpl__ +2 -2
- package/src/generators/remote/files/webpack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +8 -5
- package/src/generators/remote/files/webpack-module-federation-ssr-ts/webpack.server.config.ts__tmpl__ +2 -2
- package/src/generators/remote/files/webpack-module-federation-ts/module-federation.config.ts__tmpl__ +11 -8
- package/src/generators/remote/files/webpack-module-federation-ts/webpack.config.ts__tmpl__ +2 -2
- package/src/generators/remote/lib/setup-ssr-for-remote.d.ts +1 -1
- package/src/generators/remote/lib/setup-ssr-for-remote.js +37 -15
- package/src/generators/remote/lib/setup-tspath-for-remote.js +1 -3
- package/src/generators/remote/lib/update-host-with-remote.js +2 -2
- package/src/generators/remote/remote.d.ts +0 -1
- package/src/generators/remote/remote.js +57 -33
- package/src/generators/remote/schema.d.ts +2 -5
- package/src/generators/remote/schema.json +16 -27
- package/src/generators/setup-tailwind/lib/update-project.js +1 -2
- package/src/generators/stories/schema.json +0 -10
- package/src/generators/stories/stories.d.ts +1 -3
- package/src/generators/stories/stories.js +9 -20
- package/src/generators/storybook-configuration/configuration.js +2 -11
- package/src/generators/storybook-configuration/schema.d.ts +0 -3
- package/src/generators/storybook-configuration/schema.json +0 -15
- package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.js +11 -6
- package/src/migrations/update-20-2-0/migrate-mf-imports-to-new-package.d.ts +2 -0
- package/src/migrations/update-20-2-0/migrate-mf-imports-to-new-package.js +66 -0
- package/src/migrations/update-20-2-0/migrate-with-mf-import-to-new-package.d.ts +2 -0
- package/src/migrations/update-20-2-0/migrate-with-mf-import-to-new-package.js +41 -0
- package/src/migrations/update-20-3-0/ensure-nx-module-federation-package.d.ts +2 -0
- package/src/migrations/update-20-3-0/ensure-nx-module-federation-package.js +18 -0
- package/src/migrations/update-21-0-0/update-babel-loose.d.ts +2 -0
- package/src/migrations/update-21-0-0/update-babel-loose.js +30 -0
- package/src/plugins/router-plugin.d.ts +10 -0
- package/src/plugins/router-plugin.js +221 -0
- package/src/rules/update-module-federation-project.d.ts +2 -1
- package/src/rules/update-module-federation-project.js +37 -48
- package/src/utils/add-mf-env-to-inputs.d.ts +1 -1
- package/src/utils/add-mf-env-to-inputs.js +8 -11
- package/src/utils/assertion.d.ts +2 -0
- package/src/utils/assertion.js +6 -0
- package/src/utils/ast-utils.d.ts +1 -1
- package/src/utils/ast-utils.js +2 -2
- package/src/utils/create-ts-config.js +57 -7
- package/src/utils/ct-utils.d.ts +1 -1
- package/src/utils/ct-utils.js +2 -7
- package/src/utils/has-rsbuild-plugin.d.ts +2 -0
- package/src/utils/has-rsbuild-plugin.js +10 -0
- package/src/utils/has-rspack-plugin.d.ts +2 -0
- package/src/utils/has-rspack-plugin.js +10 -0
- package/src/utils/testing-generators.js +2 -4
- package/src/utils/version-utils.d.ts +14 -0
- package/src/utils/version-utils.js +56 -0
- package/src/utils/versions.d.ts +25 -17
- package/src/utils/versions.js +28 -19
- package/src/generators/component/files/__fileName__.tsx__tmpl__ +0 -84
- package/src/generators/component-cypress-spec/component-cypress-spec.d.ts +0 -13
- package/src/generators/component-cypress-spec/component-cypress-spec.js +0 -104
- package/src/generators/component-cypress-spec/files/__componentName__.__fileExt__ +0 -13
- package/src/generators/component-cypress-spec/schema.json +0 -45
- package/src/generators/host/files/rspack-module-federation-ssr/rspack.server.config.js__tmpl__ +0 -16
- package/src/generators/host/files/rspack-module-federation-ssr-ts/rspack.server.config.ts__tmpl__ +0 -16
- package/src/generators/library/files/common/package.json__tmpl__ +0 -4
- package/src/generators/library/files/vite/package.json__tmpl__ +0 -12
- package/src/generators/remote/files/rspack-module-federation-ssr/rspack.server.config.js__tmpl__ +0 -16
- package/src/generators/remote/files/rspack-module-federation-ssr-ts/rspack.server.config.ts__tmpl__ +0 -16
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +0 -2
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +0 -9
- package/src/migrations/update-16-2-0-remove-package/update-16-2-0-remove-package.d.ts +0 -2
- package/src/migrations/update-16-2-0-remove-package/update-16-2-0-remove-package.js +0 -8
- package/src/migrations/update-16-3-0/remove-types-react-router-dom-package.d.ts +0 -2
- package/src/migrations/update-16-3-0/remove-types-react-router-dom-package.js +0 -8
- package/src/migrations/update-16-7-0/add-babel-core.d.ts +0 -2
- package/src/migrations/update-16-7-0/add-babel-core.js +0 -14
- package/src/migrations/update-16-7-0-add-typings/update-16-7-0-add-typings.d.ts +0 -2
- package/src/migrations/update-16-7-0-add-typings/update-16-7-0-add-typings.js +0 -57
- package/src/migrations/update-18-1-1/fix-target-defaults-inputs.d.ts +0 -2
- package/src/migrations/update-18-1-1/fix-target-defaults-inputs.js +0 -53
- package/src/module-federation/load-config.d.ts +0 -3
- package/src/module-federation/load-config.js +0 -15
- package/src/module-federation/models.d.ts +0 -24
- package/src/module-federation/models.js +0 -2
- package/src/module-federation/package-json.d.ts +0 -8
- package/src/module-federation/package-json.js +0 -12
- package/src/module-federation/utils.d.ts +0 -12
- package/src/module-federation/utils.js +0 -75
- package/src/module-federation/with-module-federation-ssr.d.ts +0 -2
- package/src/module-federation/with-module-federation-ssr.js +0 -50
- package/src/module-federation/with-module-federation.d.ts +0 -7
- package/src/module-federation/with-module-federation.js +0 -63
- package/src/utils/build-static.remotes.d.ts +0 -4
- package/src/utils/build-static.remotes.js +0 -65
- package/src/utils/format-file.d.ts +0 -1
- package/src/utils/format-file.js +0 -11
- /package/src/generators/component/files/{__fileName__.spec.tsx__tmpl__ → __fileName__.spec.__ext__} +0 -0
- /package/src/generators/hook/files/{__fileName__.spec.tsx__tmpl__ → __fileName__.spec.__specExt__} +0 -0
- /package/src/generators/redux/files/{__fileName__.slice.ts__tmpl__ → ts/__fileName__.__ext__} +0 -0
|
@@ -1,36 +1,66 @@
|
|
|
1
|
-
const {
|
|
2
|
-
const {
|
|
1
|
+
const { NxAppRspackPlugin } = require('@nx/rspack/app-plugin');
|
|
2
|
+
const { NxReactRspackPlugin } = require('@nx/rspack/react-plugin');
|
|
3
|
+
const { NxModuleFederationPlugin, NxModuleFederationDevServerPlugin } = require('@nx/module-federation/rspack');
|
|
4
|
+
const { join } = require('path');
|
|
3
5
|
|
|
4
6
|
const baseConfig = require('./module-federation.config');
|
|
5
7
|
|
|
6
8
|
const prodConfig = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
9
|
+
...baseConfig,
|
|
10
|
+
/*
|
|
11
|
+
* Remote overrides for production.
|
|
12
|
+
* Each entry is a pair of a unique name and the URL where it is deployed.
|
|
13
|
+
*
|
|
14
|
+
* e.g.
|
|
15
|
+
* remotes: [
|
|
16
|
+
* ['app1', 'http://app1.example.com'],
|
|
17
|
+
* ['app2', 'http://app2.example.com'],
|
|
18
|
+
* ]
|
|
19
|
+
*
|
|
20
|
+
* You can also use a full path to the remoteEntry.js file if desired.
|
|
21
|
+
*
|
|
22
|
+
* remotes: [
|
|
23
|
+
* ['app1', 'http://example.com/path/to/app1/remoteEntry.js'],
|
|
24
|
+
* ['app2', 'http://example.com/path/to/app2/remoteEntry.js'],
|
|
25
|
+
* ]
|
|
26
|
+
*/
|
|
27
|
+
remotes: [
|
|
28
|
+
<%_ remotes.forEach(function(r) { _%>
|
|
29
|
+
['<%= r.fileName %>', 'http://localhost:<%= r.port %>/'],
|
|
30
|
+
<%_ }); _%>
|
|
31
|
+
],
|
|
28
32
|
};
|
|
29
33
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
module.exports = {
|
|
35
|
+
output: {
|
|
36
|
+
path: join(__dirname, '<%= rspackPluginOptions.outputPath %>'),
|
|
37
|
+
publicPath: 'auto'
|
|
38
|
+
},
|
|
39
|
+
devServer: {
|
|
40
|
+
port: <%= devServerPort %>,
|
|
41
|
+
historyApiFallback: {
|
|
42
|
+
index: '/index.html',
|
|
43
|
+
disableDotRule: true,
|
|
44
|
+
htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
plugins: [
|
|
48
|
+
new NxAppRspackPlugin({
|
|
49
|
+
tsConfig: '<%= rspackPluginOptions.tsConfig %>',
|
|
50
|
+
main: '<%= rspackPluginOptions.main %>',
|
|
51
|
+
index: '<%= rspackPluginOptions.index %>',
|
|
52
|
+
baseHref: '<%= rspackPluginOptions.baseHref %>',
|
|
53
|
+
assets: <%- JSON.stringify(rspackPluginOptions.assets) %>,
|
|
54
|
+
styles: <%- JSON.stringify(rspackPluginOptions.styles) %>,
|
|
55
|
+
outputHashing: process.env['NODE_ENV'] === 'production' ? 'all' : 'none',
|
|
56
|
+
optimization: process.env['NODE_ENV'] === 'production',
|
|
57
|
+
}),
|
|
58
|
+
new NxReactRspackPlugin({
|
|
59
|
+
// Uncomment this line if you don't want to use SVGR
|
|
60
|
+
// See: https://react-svgr.com/
|
|
61
|
+
// svgr: false
|
|
62
|
+
}),
|
|
63
|
+
new NxModuleFederationPlugin({ config: prodConfig }, { dts: false }),
|
|
64
|
+
new NxModuleFederationDevServerPlugin({ config: prodConfig }),
|
|
65
|
+
],
|
|
66
|
+
};
|
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @type {import('@nx/
|
|
4
|
+
* @type {import('@nx/module-federation').ModuleFederationConfig}
|
|
5
5
|
**/
|
|
6
6
|
const moduleFederationConfig = {
|
|
7
7
|
name: '<%= projectName %>',
|
|
8
8
|
remotes: [
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
<%_ if (static) {
|
|
10
|
+
remotes.forEach(function(r) { _%>
|
|
11
|
+
"<%= r.fileName %>",
|
|
12
|
+
<%_ });
|
|
13
|
+
}
|
|
14
|
+
_%>
|
|
13
15
|
],
|
|
16
|
+
shared: (libraryName, libraryConfig) => {
|
|
17
|
+
return {
|
|
18
|
+
...libraryConfig,
|
|
19
|
+
eager: true
|
|
20
|
+
}
|
|
21
|
+
},
|
|
14
22
|
};
|
|
15
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Nx requires a default export of the config to allow correct resolution of the module federation graph.
|
|
26
|
+
**/
|
|
16
27
|
module.exports = moduleFederationConfig;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const { NxAppRspackPlugin } = require('@nx/rspack/app-plugin');
|
|
2
|
+
const { NxReactRspackPlugin } = require('@nx/rspack/react-plugin');
|
|
3
|
+
const { NxModuleFederationPlugin, NxModuleFederationSSRDevServerPlugin } = require('@nx/module-federation/rspack');
|
|
4
|
+
const { join } = require('path');
|
|
5
|
+
|
|
6
|
+
const browserMfConfig = require('./module-federation.config');
|
|
7
|
+
const serverMfConfig = require('./module-federation.server.config');
|
|
8
|
+
|
|
9
|
+
const browserRspackConfig = {
|
|
10
|
+
name: 'browser',
|
|
11
|
+
output: {
|
|
12
|
+
path: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'browser'),
|
|
13
|
+
publicPath: 'auto'
|
|
14
|
+
},
|
|
15
|
+
devServer: {
|
|
16
|
+
port: <%= devServerPort %>,
|
|
17
|
+
historyApiFallback: {
|
|
18
|
+
index: '/index.html',
|
|
19
|
+
disableDotRule: true,
|
|
20
|
+
htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
|
|
21
|
+
},
|
|
22
|
+
devMiddleware: {
|
|
23
|
+
writeToDisk: (file: string) => !file.includes('.hot-update.'),
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
plugins: [
|
|
27
|
+
new NxAppRspackPlugin({
|
|
28
|
+
tsConfig: '<%= rspackPluginOptions.tsConfig %>',
|
|
29
|
+
main: '<%= rspackPluginOptions.main %>',
|
|
30
|
+
index: '<%= rspackPluginOptions.index %>',
|
|
31
|
+
baseHref: '<%= rspackPluginOptions.baseHref %>',
|
|
32
|
+
assets: <%- JSON.stringify(rspackPluginOptions.assets) %>,
|
|
33
|
+
styles: <%- JSON.stringify(rspackPluginOptions.styles) %>,
|
|
34
|
+
outputHashing: process.env['NODE_ENV'] === 'production' ? 'all' : 'none',
|
|
35
|
+
optimization: process.env['NODE_ENV'] === 'production',
|
|
36
|
+
}),
|
|
37
|
+
new NxReactRspackPlugin({
|
|
38
|
+
// Uncomment this line if you don't want to use SVGR
|
|
39
|
+
// See: https://react-svgr.com/
|
|
40
|
+
// svgr: false
|
|
41
|
+
}),
|
|
42
|
+
new NxModuleFederationPlugin({ config: browserMfConfig }, { dts: false }),
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const serverRspackConfig = {
|
|
47
|
+
name: 'server',
|
|
48
|
+
target: 'async-node',
|
|
49
|
+
output: {
|
|
50
|
+
path: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'server'),
|
|
51
|
+
filename: 'server.js'
|
|
52
|
+
},
|
|
53
|
+
plugins: [
|
|
54
|
+
new NxAppRspackPlugin({
|
|
55
|
+
outputPath: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'server'),
|
|
56
|
+
outputFileName: 'server.js',
|
|
57
|
+
tsConfig: '<%= rspackPluginOptions.tsConfig %>',
|
|
58
|
+
main: '<%= rspackPluginOptions.mainServer %>',
|
|
59
|
+
baseHref: '<%= rspackPluginOptions.baseHref %>',
|
|
60
|
+
}),
|
|
61
|
+
new NxModuleFederationPlugin({ config: serverMfConfig, isServer: true }, { dts: false }),
|
|
62
|
+
new NxModuleFederationSSRDevServerPlugin({ config: serverMfConfig }),
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
module.exports = [browserRspackConfig, serverRspackConfig];
|
|
@@ -7,7 +7,7 @@ import { handleRequest } from './src/main.server';
|
|
|
7
7
|
const port = process.env['PORT'] || <%= port %>;
|
|
8
8
|
const app = express();
|
|
9
9
|
|
|
10
|
-
const browserDist = path.join(process.cwd(), '<%=
|
|
10
|
+
const browserDist = path.join(process.cwd(), '<%= rspackPluginOptions.outputPath %>', 'browser');
|
|
11
11
|
const indexPath = path.join(browserDist, 'index.html');
|
|
12
12
|
|
|
13
13
|
app.use(cors());
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Request, Response } from 'express';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as ReactDOMServer from 'react-dom/server';
|
|
4
|
+
import isbot from 'isbot'
|
|
5
|
+
|
|
6
|
+
import App from './app/app';
|
|
7
|
+
|
|
8
|
+
import { StaticRouter } from 'react-router-dom/server';
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
let indexHtml: null | string = null;
|
|
12
|
+
|
|
13
|
+
export function handleRequest(indexPath: string) {
|
|
14
|
+
return function render(req: Request, res: Response) {
|
|
15
|
+
let didError = false;
|
|
16
|
+
|
|
17
|
+
if (!indexHtml) {
|
|
18
|
+
indexHtml = fs.readFileSync(indexPath).toString();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const [htmlStart, htmlEnd] = indexHtml.split(`<div id="root"></div>`);
|
|
22
|
+
|
|
23
|
+
// For bots (e.g. search engines), the content will not be streamed but render all at once.
|
|
24
|
+
// For users, content should be streamed to the user as they are ready.
|
|
25
|
+
const callbackName = isbot(req.headers['user-agent']) ? 'onAllReady' : 'onShellReady';
|
|
26
|
+
|
|
27
|
+
const stream = ReactDOMServer.renderToPipeableStream(
|
|
28
|
+
<StaticRouter location={req.originalUrl}><App /></StaticRouter>,
|
|
29
|
+
{
|
|
30
|
+
[callbackName]() {
|
|
31
|
+
res.statusCode = didError ? 500 : 200;
|
|
32
|
+
res.setHeader('Content-type', 'text/html; charset=utf-8');
|
|
33
|
+
res.write(`${htmlStart}<div id="root">`);
|
|
34
|
+
stream.pipe(res);
|
|
35
|
+
res.write(`</div>${htmlEnd}`);
|
|
36
|
+
},
|
|
37
|
+
onShellError(error) {
|
|
38
|
+
console.error(error);
|
|
39
|
+
res.statusCode = 500;
|
|
40
|
+
res.send('<!doctype html><h1>Server Error</h1>');
|
|
41
|
+
},
|
|
42
|
+
onError(error) {
|
|
43
|
+
didError = true;
|
|
44
|
+
console.error(error);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import { ModuleFederationConfig } from '@nx/
|
|
1
|
+
import { ModuleFederationConfig } from '@nx/module-federation';
|
|
2
2
|
|
|
3
3
|
const config: ModuleFederationConfig = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
name: '<%= projectName %>',
|
|
5
|
+
remotes: [
|
|
6
|
+
<%_ if (static) {
|
|
7
|
+
remotes.forEach(function(r) { _%>
|
|
8
|
+
"<%= r.fileName %>",
|
|
9
|
+
<%_ }); } _%>
|
|
10
10
|
],
|
|
11
|
+
shared: (libraryName, libraryConfig) => {
|
|
12
|
+
return {
|
|
13
|
+
...libraryConfig,
|
|
14
|
+
eager: true
|
|
15
|
+
}
|
|
16
|
+
},
|
|
11
17
|
};
|
|
12
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Nx requires a default export of the config to allow correct resolution of the module federation graph.
|
|
21
|
+
**/
|
|
13
22
|
export default config;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { NxAppRspackPlugin } from '@nx/rspack/app-plugin';
|
|
2
|
+
import { NxReactRspackPlugin } from '@nx/rspack/react-plugin';
|
|
3
|
+
import { NxModuleFederationPlugin, NxModuleFederationSSRDevServerPlugin } from '@nx/module-federation/rspack';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
|
|
6
|
+
import browserMfConfig from './module-federation.config';
|
|
7
|
+
import serverMfConfig from './module-federation.server.config';
|
|
8
|
+
|
|
9
|
+
const browserRspackConfig = {
|
|
10
|
+
name: 'browser',
|
|
11
|
+
output: {
|
|
12
|
+
path: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'browser'),
|
|
13
|
+
publicPath: 'auto'
|
|
14
|
+
},
|
|
15
|
+
devServer: {
|
|
16
|
+
port: <%= devServerPort %>,
|
|
17
|
+
historyApiFallback: {
|
|
18
|
+
index: '/index.html',
|
|
19
|
+
disableDotRule: true,
|
|
20
|
+
htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
|
|
21
|
+
},
|
|
22
|
+
devMiddleware: {
|
|
23
|
+
writeToDisk: (file: string) => !file.includes('.hot-update.'),
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
plugins: [
|
|
27
|
+
new NxAppRspackPlugin({
|
|
28
|
+
tsConfig: '<%= rspackPluginOptions.tsConfig %>',
|
|
29
|
+
main: '<%= rspackPluginOptions.main %>',
|
|
30
|
+
index: '<%= rspackPluginOptions.index %>',
|
|
31
|
+
baseHref: '<%= rspackPluginOptions.baseHref %>',
|
|
32
|
+
assets: <%- JSON.stringify(rspackPluginOptions.assets) %>,
|
|
33
|
+
styles: <%- JSON.stringify(rspackPluginOptions.styles) %>,
|
|
34
|
+
outputHashing: process.env['NODE_ENV'] === 'production' ? 'all' : 'none',
|
|
35
|
+
optimization: process.env['NODE_ENV'] === 'production',
|
|
36
|
+
}),
|
|
37
|
+
new NxReactRspackPlugin({
|
|
38
|
+
// Uncomment this line if you don't want to use SVGR
|
|
39
|
+
// See: https://react-svgr.com/
|
|
40
|
+
// svgr: false
|
|
41
|
+
}),
|
|
42
|
+
new NxModuleFederationPlugin({ config: browserMfConfig }, { dts: false }),
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const serverRspackConfig = {
|
|
47
|
+
name: 'server',
|
|
48
|
+
target: 'async-node',
|
|
49
|
+
output: {
|
|
50
|
+
path: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'server'),
|
|
51
|
+
filename: 'server.js'
|
|
52
|
+
},
|
|
53
|
+
plugins: [
|
|
54
|
+
new NxAppRspackPlugin({
|
|
55
|
+
outputPath: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'server'),
|
|
56
|
+
outputFileName: 'server.js',
|
|
57
|
+
tsConfig: '<%= rspackPluginOptions.tsConfig %>',
|
|
58
|
+
main: '<%= rspackPluginOptions.mainServer %>',
|
|
59
|
+
baseHref: '<%= rspackPluginOptions.baseHref %>',
|
|
60
|
+
}),
|
|
61
|
+
new NxModuleFederationPlugin({ config: serverMfConfig, isServer: true }, { dts: false }),
|
|
62
|
+
new NxModuleFederationSSRDevServerPlugin({ config: serverMfConfig }),
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export default [browserRspackConfig, serverRspackConfig];
|
|
@@ -7,7 +7,7 @@ import { handleRequest } from './src/main.server';
|
|
|
7
7
|
const port = process.env['PORT'] || <%= port %>;
|
|
8
8
|
const app = express();
|
|
9
9
|
|
|
10
|
-
const browserDist = path.join(process.cwd(), '<%=
|
|
10
|
+
const browserDist = path.join(process.cwd(), '<%= rspackPluginOptions.outputPath %>', 'browser');
|
|
11
11
|
const indexPath = path.join(browserDist, 'index.html');
|
|
12
12
|
|
|
13
13
|
app.use(cors());
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Request, Response } from 'express';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as ReactDOMServer from 'react-dom/server';
|
|
4
|
+
import isbot from 'isbot'
|
|
5
|
+
|
|
6
|
+
import App from './app/app';
|
|
7
|
+
|
|
8
|
+
import { StaticRouter } from 'react-router-dom/server';
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
let indexHtml: null | string = null;
|
|
12
|
+
|
|
13
|
+
export function handleRequest(indexPath: string) {
|
|
14
|
+
return function render(req: Request, res: Response) {
|
|
15
|
+
let didError = false;
|
|
16
|
+
|
|
17
|
+
if (!indexHtml) {
|
|
18
|
+
indexHtml = fs.readFileSync(indexPath).toString();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const [htmlStart, htmlEnd] = indexHtml.split(`<div id="root"></div>`);
|
|
22
|
+
|
|
23
|
+
// For bots (e.g. search engines), the content will not be streamed but render all at once.
|
|
24
|
+
// For users, content should be streamed to the user as they are ready.
|
|
25
|
+
const callbackName = isbot(req.headers['user-agent']) ? 'onAllReady' : 'onShellReady';
|
|
26
|
+
|
|
27
|
+
const stream = ReactDOMServer.renderToPipeableStream(
|
|
28
|
+
<StaticRouter location={req.originalUrl}><App /></StaticRouter>,
|
|
29
|
+
{
|
|
30
|
+
[callbackName]() {
|
|
31
|
+
res.statusCode = didError ? 500 : 200;
|
|
32
|
+
res.setHeader('Content-type', 'text/html; charset=utf-8');
|
|
33
|
+
res.write(`${htmlStart}<div id="root">`);
|
|
34
|
+
stream.pipe(res);
|
|
35
|
+
res.write(`</div>${htmlEnd}`);
|
|
36
|
+
},
|
|
37
|
+
onShellError(error) {
|
|
38
|
+
console.error(error);
|
|
39
|
+
res.statusCode = 500;
|
|
40
|
+
res.send('<!doctype html><h1>Server Error</h1>');
|
|
41
|
+
},
|
|
42
|
+
onError(error) {
|
|
43
|
+
didError = true;
|
|
44
|
+
console.error(error);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
}
|
package/src/generators/host/files/rspack-module-federation-ts/module-federation.config.ts__tmpl__
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import { ModuleFederationConfig } from '@nx/
|
|
1
|
+
import { ModuleFederationConfig } from '@nx/module-federation';
|
|
2
2
|
|
|
3
3
|
const config: ModuleFederationConfig = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
%>
|
|
4
|
+
name: '<%= projectName %>',
|
|
5
|
+
/**
|
|
6
|
+
* To use a remote that does not exist in your current Nx Workspace
|
|
7
|
+
* You can use the tuple-syntax to define your remote
|
|
8
|
+
*
|
|
9
|
+
* remotes: [['my-external-remote', 'https://nx-angular-remote.netlify.app']]
|
|
10
|
+
*
|
|
11
|
+
* You _may_ need to add a `remotes.d.ts` file to your `src/` folder declaring the external remote for tsc, with the
|
|
12
|
+
* following content:
|
|
13
|
+
*
|
|
14
|
+
* declare module 'my-external-remote';
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
remotes: [
|
|
18
|
+
<%_ if (static) {
|
|
19
|
+
remotes.forEach(function(r) { _%>
|
|
20
|
+
"<%= r.fileName %>",
|
|
21
|
+
<%_ }); } _%>
|
|
22
22
|
],
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Nx requires a default export of the config to allow correct resolution of the module federation graph.
|
|
27
|
+
**/
|
|
25
28
|
export default config;
|
|
@@ -1,36 +1,67 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { NxAppRspackPlugin } from '@nx/rspack/app-plugin';
|
|
2
|
+
import { NxReactRspackPlugin } from '@nx/rspack/react-plugin';
|
|
3
|
+
import { NxModuleFederationPlugin, NxModuleFederationDevServerPlugin } from '@nx/module-federation/rspack';
|
|
4
|
+
import { ModuleFederationConfig } from '@nx/module-federation';
|
|
5
|
+
import { join } from 'path';
|
|
3
6
|
|
|
4
7
|
import baseConfig from './module-federation.config';
|
|
5
8
|
|
|
6
9
|
const prodConfig: ModuleFederationConfig = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
],
|
|
10
|
+
...baseConfig,
|
|
11
|
+
/*
|
|
12
|
+
* Remote overrides for production.
|
|
13
|
+
* Each entry is a pair of a unique name and the URL where it is deployed.
|
|
14
|
+
*
|
|
15
|
+
* e.g.
|
|
16
|
+
* remotes: [
|
|
17
|
+
* ['app1', 'http://app1.example.com'],
|
|
18
|
+
* ['app2', 'http://app2.example.com'],
|
|
19
|
+
* ]
|
|
20
|
+
*
|
|
21
|
+
* You can also use a full path to the remoteEntry.js file if desired.
|
|
22
|
+
*
|
|
23
|
+
* remotes: [
|
|
24
|
+
* ['app1', 'http://example.com/path/to/app1/remoteEntry.js'],
|
|
25
|
+
* ['app2', 'http://example.com/path/to/app2/remoteEntry.js'],
|
|
26
|
+
* ]
|
|
27
|
+
*/
|
|
28
|
+
remotes: [
|
|
29
|
+
<%_ remotes.forEach(function(r) { _%>
|
|
30
|
+
['<%= r.fileName %>', 'http://localhost:<%= r.port %>/'],
|
|
31
|
+
<%_ }); _%>
|
|
32
|
+
],
|
|
28
33
|
};
|
|
29
34
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
export default {
|
|
36
|
+
output: {
|
|
37
|
+
path: join(__dirname, '<%= rspackPluginOptions.outputPath %>'),
|
|
38
|
+
publicPath: 'auto'
|
|
39
|
+
},
|
|
40
|
+
devServer: {
|
|
41
|
+
port: <%= devServerPort %>,
|
|
42
|
+
historyApiFallback: {
|
|
43
|
+
index: '/index.html',
|
|
44
|
+
disableDotRule: true,
|
|
45
|
+
htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
plugins: [
|
|
49
|
+
new NxAppRspackPlugin({
|
|
50
|
+
tsConfig: '<%= rspackPluginOptions.tsConfig %>',
|
|
51
|
+
main: '<%= rspackPluginOptions.main %>',
|
|
52
|
+
index: '<%= rspackPluginOptions.index %>',
|
|
53
|
+
baseHref: '<%= rspackPluginOptions.baseHref %>',
|
|
54
|
+
assets: <%- JSON.stringify(rspackPluginOptions.assets) %>,
|
|
55
|
+
styles: <%- JSON.stringify(rspackPluginOptions.styles) %>,
|
|
56
|
+
outputHashing: process.env['NODE_ENV'] === 'production' ? 'all' : 'none',
|
|
57
|
+
optimization: process.env['NODE_ENV'] === 'production',
|
|
58
|
+
}),
|
|
59
|
+
new NxReactRspackPlugin({
|
|
60
|
+
// Uncomment this line if you don't want to use SVGR
|
|
61
|
+
// See: https://react-svgr.com/
|
|
62
|
+
// svgr: false
|
|
63
|
+
}),
|
|
64
|
+
new NxModuleFederationPlugin({ config: prodConfig }, { dts: false }),
|
|
65
|
+
new NxModuleFederationDevServerPlugin({ config: prodConfig }),
|
|
66
|
+
],
|
|
67
|
+
};
|
|
@@ -1,16 +1,40 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { NxAppRspackPlugin } from '@nx/rspack/app-plugin';
|
|
2
|
+
import { NxReactRspackPlugin } from '@nx/rspack/react-plugin';
|
|
3
|
+
import { NxModuleFederationPlugin, NxModuleFederationDevServerPlugin } from '@nx/module-federation/rspack';
|
|
4
|
+
import { join } from 'path';
|
|
3
5
|
|
|
4
|
-
import
|
|
6
|
+
import config from './module-federation.config';
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
export default {
|
|
9
|
+
output: {
|
|
10
|
+
path: join(__dirname, '<%= rspackPluginOptions.outputPath %>'),
|
|
11
|
+
publicPath: 'auto'
|
|
12
|
+
},
|
|
13
|
+
devServer: {
|
|
14
|
+
port: <%= devServerPort %>,
|
|
15
|
+
historyApiFallback: {
|
|
16
|
+
index: '/index.html',
|
|
17
|
+
disableDotRule: true,
|
|
18
|
+
htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
plugins: [
|
|
22
|
+
new NxAppRspackPlugin({
|
|
23
|
+
tsConfig: '<%= rspackPluginOptions.tsConfig %>',
|
|
24
|
+
main: '<%= rspackPluginOptions.main %>',
|
|
25
|
+
index: '<%= rspackPluginOptions.index %>',
|
|
26
|
+
baseHref: '<%= rspackPluginOptions.baseHref %>',
|
|
27
|
+
assets: <%- JSON.stringify(rspackPluginOptions.assets) %>,
|
|
28
|
+
styles: <%- JSON.stringify(rspackPluginOptions.styles) %>,
|
|
29
|
+
outputHashing: process.env['NODE_ENV'] === 'production' ? 'all' : 'none',
|
|
30
|
+
optimization: process.env['NODE_ENV'] === 'production',
|
|
31
|
+
}),
|
|
32
|
+
new NxReactRspackPlugin({
|
|
33
|
+
// Uncomment this line if you don't want to use SVGR
|
|
34
|
+
// See: https://react-svgr.com/
|
|
35
|
+
// svgr: false
|
|
36
|
+
}),
|
|
37
|
+
new NxModuleFederationPlugin({ config }, { dts: false }),
|
|
38
|
+
new NxModuleFederationDevServerPlugin({ config }),
|
|
39
|
+
],
|
|
8
40
|
};
|
|
9
|
-
|
|
10
|
-
// Nx plugins for rspack to build config object from Nx options and context.
|
|
11
|
-
/**
|
|
12
|
-
* DTS Plugin is disabled in Nx Workspaces as Nx already provides Typing support for Module Federation
|
|
13
|
-
* The DTS Plugin can be enabled by setting dts: true
|
|
14
|
-
* Learn more about the DTS Plugin here: https://module-federation.io/configure/dts.html
|
|
15
|
-
*/
|
|
16
|
-
export default composePlugins(withNx(), withReact(), withModuleFederation(config, { dts: false }));
|
package/src/generators/host/files/webpack-module-federation/module-federation.config.js__tmpl__
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nx requires a default export of the config to allow correct resolution of the module federation graph.
|
|
3
|
+
**/
|
|
1
4
|
module.exports = {
|
|
2
5
|
name: '<%= projectName %>',
|
|
3
6
|
/**
|
|
@@ -13,9 +16,9 @@ module.exports = {
|
|
|
13
16
|
*
|
|
14
17
|
*/
|
|
15
18
|
remotes: [
|
|
16
|
-
<% if (static) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
<%_ if (static) {
|
|
20
|
+
remotes.forEach(function(r) { _%>
|
|
21
|
+
"<%= r.fileName %>",
|
|
22
|
+
<%_ }); } _%>
|
|
20
23
|
],
|
|
21
|
-
};
|
|
24
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { composePlugins, withNx } = require('@nx/webpack');
|
|
2
2
|
const { withReact } = require('@nx/react');
|
|
3
|
-
const { withModuleFederation } = require('@nx/
|
|
3
|
+
const { withModuleFederation } = require('@nx/module-federation/webpack');
|
|
4
4
|
|
|
5
5
|
const baseConfig = require('./module-federation.config');
|
|
6
6
|
|