@nx/react 24.0.0-beta.2 → 24.0.0-canary.20261016-5ef7804

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.
Files changed (158) hide show
  1. package/dist/index.d.ts +0 -2
  2. package/dist/index.js +1 -5
  3. package/dist/src/generators/application/files/base-rspack/rspack.config.js__tmpl__ +2 -10
  4. package/dist/src/generators/application/files/base-webpack/webpack.config.js__tmpl__ +2 -10
  5. package/dist/src/migrations/update-23-2-0/add-optional-module-federation-packages.js +2 -1
  6. package/dist/src/utils/versions.d.ts +0 -3
  7. package/dist/src/utils/versions.js +2 -5
  8. package/executors.json +1 -17
  9. package/generators.json +0 -21
  10. package/package.json +16 -47
  11. package/dist/mf/dynamic-federation.d.ts +0 -69
  12. package/dist/mf/dynamic-federation.js +0 -141
  13. package/dist/mf/index.d.ts +0 -1
  14. package/dist/mf/index.js +0 -8
  15. package/dist/module-federation.d.ts +0 -5
  16. package/dist/module-federation.js +0 -20
  17. package/dist/src/executors/module-federation-dev-server/lib/index.d.ts +0 -2
  18. package/dist/src/executors/module-federation-dev-server/lib/index.js +0 -5
  19. package/dist/src/executors/module-federation-dev-server/lib/normalize-options.d.ts +0 -4
  20. package/dist/src/executors/module-federation-dev-server/lib/normalize-options.js +0 -19
  21. package/dist/src/executors/module-federation-dev-server/lib/start-remotes.d.ts +0 -5
  22. package/dist/src/executors/module-federation-dev-server/lib/start-remotes.js +0 -33
  23. package/dist/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +0 -6
  24. package/dist/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +0 -80
  25. package/dist/src/executors/module-federation-dev-server/schema.d.ts +0 -19
  26. package/dist/src/executors/module-federation-dev-server/schema.json +0 -142
  27. package/dist/src/executors/module-federation-ssr-dev-server/lib/index.d.ts +0 -2
  28. package/dist/src/executors/module-federation-ssr-dev-server/lib/index.js +0 -5
  29. package/dist/src/executors/module-federation-ssr-dev-server/lib/normalize-options.d.ts +0 -4
  30. package/dist/src/executors/module-federation-ssr-dev-server/lib/normalize-options.js +0 -23
  31. package/dist/src/executors/module-federation-ssr-dev-server/lib/start-remotes.d.ts +0 -5
  32. package/dist/src/executors/module-federation-ssr-dev-server/lib/start-remotes.js +0 -34
  33. package/dist/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts +0 -3
  34. package/dist/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +0 -83
  35. package/dist/src/executors/module-federation-ssr-dev-server/schema.d.ts +0 -29
  36. package/dist/src/executors/module-federation-ssr-dev-server/schema.json +0 -81
  37. package/dist/src/executors/module-federation-static-server/module-federation-static-server.impl.d.ts +0 -12
  38. package/dist/src/executors/module-federation-static-server/module-federation-static-server.impl.js +0 -244
  39. package/dist/src/executors/module-federation-static-server/schema.d.ts +0 -3
  40. package/dist/src/executors/module-federation-static-server/schema.json +0 -16
  41. package/dist/src/generators/federate-module/federate-module.d.ts +0 -4
  42. package/dist/src/generators/federate-module/federate-module.js +0 -67
  43. package/dist/src/generators/federate-module/lib/utils.d.ts +0 -23
  44. package/dist/src/generators/federate-module/lib/utils.js +0 -99
  45. package/dist/src/generators/federate-module/schema.d.ts +0 -15
  46. package/dist/src/generators/federate-module/schema.json +0 -89
  47. package/dist/src/generators/host/files/common/src/app/__fileName__.js__tmpl__ +0 -40
  48. package/dist/src/generators/host/files/common/src/main.js__tmpl__ +0 -13
  49. package/dist/src/generators/host/files/common/tsconfig.lint.json__tmpl__ +0 -19
  50. package/dist/src/generators/host/files/common-ts/src/app/__fileName__.tsx__tmpl__ +0 -41
  51. package/dist/src/generators/host/files/common-ts/src/main.ts__tmpl__ +0 -13
  52. package/dist/src/generators/host/files/rspack-common/src/app/__fileName__.jsx__tmpl__ +0 -42
  53. package/dist/src/generators/host/files/rspack-common/src/main.jsx__tmpl__ +0 -13
  54. package/dist/src/generators/host/files/rspack-common/tsconfig.lint.json__tmpl__ +0 -19
  55. package/dist/src/generators/host/files/rspack-module-federation/module-federation.config.js__tmpl__ +0 -24
  56. package/dist/src/generators/host/files/rspack-module-federation/rspack.config.js__tmpl__ +0 -42
  57. package/dist/src/generators/host/files/rspack-module-federation/rspack.config.prod.js__tmpl__ +0 -66
  58. package/dist/src/generators/host/files/rspack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -27
  59. package/dist/src/generators/host/files/rspack-module-federation-ssr/rspack.config.js__tmpl__ +0 -68
  60. package/dist/src/generators/host/files/rspack-module-federation-ssr/server.ts__tmpl__ +0 -28
  61. package/dist/src/generators/host/files/rspack-module-federation-ssr/src/main.server.tsx__tmpl__ +0 -49
  62. package/dist/src/generators/host/files/rspack-module-federation-ssr/tsconfig.server.json__tmpl__ +0 -17
  63. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -22
  64. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/rspack.config.ts__tmpl__ +0 -68
  65. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/server.ts__tmpl__ +0 -28
  66. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/src/main.server.tsx__tmpl__ +0 -49
  67. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/tsconfig.server.json__tmpl__ +0 -17
  68. package/dist/src/generators/host/files/rspack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -28
  69. package/dist/src/generators/host/files/rspack-module-federation-ts/rspack.config.prod.ts__tmpl__ +0 -67
  70. package/dist/src/generators/host/files/rspack-module-federation-ts/rspack.config.ts__tmpl__ +0 -42
  71. package/dist/src/generators/host/files/webpack-module-federation/module-federation.config.js__tmpl__ +0 -24
  72. package/dist/src/generators/host/files/webpack-module-federation/webpack.config.js__tmpl__ +0 -17
  73. package/dist/src/generators/host/files/webpack-module-federation/webpack.config.prod.js__tmpl__ +0 -39
  74. package/dist/src/generators/host/files/webpack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -19
  75. package/dist/src/generators/host/files/webpack-module-federation-ssr/server.ts__tmpl__ +0 -28
  76. package/dist/src/generators/host/files/webpack-module-federation-ssr/tsconfig.server.json__tmpl__ +0 -17
  77. package/dist/src/generators/host/files/webpack-module-federation-ssr/webpack.server.config.js__tmpl__ +0 -17
  78. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -16
  79. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/server.ts__tmpl__ +0 -28
  80. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/tsconfig.server.json__tmpl__ +0 -17
  81. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/webpack.server.config.ts__tmpl__ +0 -17
  82. package/dist/src/generators/host/files/webpack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -28
  83. package/dist/src/generators/host/files/webpack-module-federation-ts/webpack.config.prod.ts__tmpl__ +0 -40
  84. package/dist/src/generators/host/files/webpack-module-federation-ts/webpack.config.ts__tmpl__ +0 -18
  85. package/dist/src/generators/host/host.d.ts +0 -4
  86. package/dist/src/generators/host/host.js +0 -174
  87. package/dist/src/generators/host/lib/add-module-federation-files.d.ts +0 -6
  88. package/dist/src/generators/host/lib/add-module-federation-files.js +0 -92
  89. package/dist/src/generators/host/lib/normalize-host-name.d.ts +0 -2
  90. package/dist/src/generators/host/lib/normalize-host-name.js +0 -12
  91. package/dist/src/generators/host/lib/setup-ssr-for-host.d.ts +0 -6
  92. package/dist/src/generators/host/lib/setup-ssr-for-host.js +0 -59
  93. package/dist/src/generators/host/lib/update-module-federation-e2e-project.d.ts +0 -3
  94. package/dist/src/generators/host/lib/update-module-federation-e2e-project.js +0 -19
  95. package/dist/src/generators/host/lib/update-module-federation-tsconfig.d.ts +0 -3
  96. package/dist/src/generators/host/lib/update-module-federation-tsconfig.js +0 -34
  97. package/dist/src/generators/host/schema.d.ts +0 -44
  98. package/dist/src/generators/host/schema.json +0 -173
  99. package/dist/src/generators/remote/files/common/src/main.js__tmpl__ +0 -1
  100. package/dist/src/generators/remote/files/common/src/remote-entry.js__tmpl__ +0 -1
  101. package/dist/src/generators/remote/files/common-ts/src/main.ts__tmpl__ +0 -1
  102. package/dist/src/generators/remote/files/common-ts/src/remote-entry.ts__tmpl__ +0 -1
  103. package/dist/src/generators/remote/files/rspack-common/src/main.jsx__tmpl__ +0 -1
  104. package/dist/src/generators/remote/files/rspack-common/src/remote-entry.js__tmpl__ +0 -1
  105. package/dist/src/generators/remote/files/rspack-module-federation/module-federation.config.js__tmpl__ +0 -12
  106. package/dist/src/generators/remote/files/rspack-module-federation/rspack.config.js__tmpl__ +0 -45
  107. package/dist/src/generators/remote/files/rspack-module-federation/rspack.config.prod.js__tmpl__ +0 -1
  108. package/dist/src/generators/remote/files/rspack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -15
  109. package/dist/src/generators/remote/files/rspack-module-federation-ssr/rspack.config.js__tmpl__ +0 -71
  110. package/dist/src/generators/remote/files/rspack-module-federation-ssr/server.ts__tmpl__ +0 -45
  111. package/dist/src/generators/remote/files/rspack-module-federation-ssr/src/main.server.tsx__tmpl__ +0 -45
  112. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -19
  113. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/rspack.config.ts__tmpl__ +0 -71
  114. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/server.ts__tmpl__ +0 -45
  115. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/src/main.server.tsx__tmpl__ +0 -45
  116. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/tsconfig.lint.json__tmpl__ +0 -19
  117. package/dist/src/generators/remote/files/rspack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -16
  118. package/dist/src/generators/remote/files/rspack-module-federation-ts/rspack.config.prod.ts__tmpl__ +0 -1
  119. package/dist/src/generators/remote/files/rspack-module-federation-ts/rspack.config.ts__tmpl__ +0 -45
  120. package/dist/src/generators/remote/files/rspack-module-federation-ts/tsconfig.lint.json__tmpl__ +0 -19
  121. package/dist/src/generators/remote/files/webpack-module-federation/module-federation.config.js__tmpl__ +0 -12
  122. package/dist/src/generators/remote/files/webpack-module-federation/webpack.config.js__tmpl__ +0 -17
  123. package/dist/src/generators/remote/files/webpack-module-federation/webpack.config.prod.js__tmpl__ +0 -1
  124. package/dist/src/generators/remote/files/webpack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -9
  125. package/dist/src/generators/remote/files/webpack-module-federation-ssr/server.ts__tmpl__ +0 -45
  126. package/dist/src/generators/remote/files/webpack-module-federation-ssr/webpack.server.config.js__tmpl__ +0 -17
  127. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -13
  128. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/server.ts__tmpl__ +0 -45
  129. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/tsconfig.lint.json__tmpl__ +0 -19
  130. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/webpack.server.config.ts__tmpl__ +0 -17
  131. package/dist/src/generators/remote/files/webpack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -16
  132. package/dist/src/generators/remote/files/webpack-module-federation-ts/tsconfig.lint.json__tmpl__ +0 -19
  133. package/dist/src/generators/remote/files/webpack-module-federation-ts/webpack.config.prod.ts__tmpl__ +0 -1
  134. package/dist/src/generators/remote/files/webpack-module-federation-ts/webpack.config.ts__tmpl__ +0 -17
  135. package/dist/src/generators/remote/lib/add-remote-to-dynamic-host.d.ts +0 -2
  136. package/dist/src/generators/remote/lib/add-remote-to-dynamic-host.js +0 -12
  137. package/dist/src/generators/remote/lib/setup-package-json-exports-for-remote.d.ts +0 -3
  138. package/dist/src/generators/remote/lib/setup-package-json-exports-for-remote.js +0 -30
  139. package/dist/src/generators/remote/lib/setup-ssr-for-remote.d.ts +0 -4
  140. package/dist/src/generators/remote/lib/setup-ssr-for-remote.js +0 -61
  141. package/dist/src/generators/remote/lib/setup-tspath-for-remote.d.ts +0 -3
  142. package/dist/src/generators/remote/lib/setup-tspath-for-remote.js +0 -14
  143. package/dist/src/generators/remote/lib/update-host-with-remote.d.ts +0 -2
  144. package/dist/src/generators/remote/lib/update-host-with-remote.js +0 -79
  145. package/dist/src/generators/remote/remote.d.ts +0 -6
  146. package/dist/src/generators/remote/remote.js +0 -201
  147. package/dist/src/generators/remote/schema.d.ts +0 -39
  148. package/dist/src/generators/remote/schema.json +0 -173
  149. package/dist/src/module-federation/ast-utils.d.ts +0 -8
  150. package/dist/src/module-federation/ast-utils.js +0 -101
  151. package/dist/src/rules/update-module-federation-project.d.ts +0 -11
  152. package/dist/src/rules/update-module-federation-project.js +0 -72
  153. package/dist/src/utils/add-mf-env-to-inputs.d.ts +0 -2
  154. package/dist/src/utils/add-mf-env-to-inputs.js +0 -29
  155. package/dist/src/utils/module-federation-deprecation.d.ts +0 -12
  156. package/dist/src/utils/module-federation-deprecation.js +0 -46
  157. package/dist/src/utils/normalize-remote.d.ts +0 -8
  158. package/dist/src/utils/normalize-remote.js +0 -31
@@ -1,41 +0,0 @@
1
- import * as React from 'react';
2
- <%_ if (!minimal) { _%>
3
- import NxWelcome from "./nx-welcome";
4
- <%_ } _%>
5
- import { Link, Route, Routes } from 'react-router-dom';
6
- <%_ if (dynamic && remotes.length > 0) { _%>
7
- import { loadRemote } from '@module-federation/enhanced/runtime';
8
- <%_ } _%>
9
-
10
- <%_ if (remotes.length > 0) {
11
- remotes.forEach(function(r) { _%>
12
- <%_ if (dynamic) { _%>
13
- const <%= r.className %> = React.lazy(() => loadRemote('<%= r.fileName %>/Module') as any)
14
- <%_ } else { _%>
15
- const <%= r.className %> = React.lazy(() => import('<%= r.fileName %>/Module'));
16
- <%_ } _%>
17
- <%_ }); _%>
18
- <%_ } _%>
19
-
20
- export function App() {
21
- return (
22
- <React.Suspense fallback={null}>
23
- <ul>
24
- <li><Link to="/">Home</Link></li>
25
- <%_ remotes.forEach(function(r) { _%>
26
- <li><Link to="/<%=r.fileName%>"><%=r.className%></Link></li>
27
- <%_ }); _%>
28
- </ul>
29
- <Routes>
30
- <%_ if (!minimal) { _%>
31
- <Route path="/" element={<NxWelcome title="<%= projectName %>"/>} />
32
- <%_ } _%>
33
- <%_ remotes.forEach(function(r) { _%>
34
- <Route path="/<%=r.fileName%>" element={<<%= r.className %>/>} />
35
- <%_ }); _%>
36
- </Routes>
37
- </React.Suspense>
38
- );
39
- }
40
-
41
- export default App;
@@ -1,13 +0,0 @@
1
- <%_ if (dynamic) { _%>
2
- import { registerRemotes } from '@module-federation/enhanced/runtime';
3
-
4
- fetch('/assets/module-federation.manifest.json')
5
- .then((res) => res.json())
6
- .then((remotes: Record<string, string>) =>
7
- Object.entries(remotes).map(([name, entry]) => ({ name, entry }))
8
- )
9
- .then((remotes) => registerRemotes(remotes))
10
- .then(() => import('./bootstrap').catch(err => console.error(err)));
11
- <%_ } else { _%>
12
- import('./bootstrap').catch(err => console.error(err));
13
- <%_ } _%>
@@ -1,42 +0,0 @@
1
- import * as React from 'react';
2
- <%_ if (!minimal) { _%>
3
- import NxWelcome from "./nx-welcome";
4
- <%_ } _%>
5
- import { Link, Route, Routes } from 'react-router-dom';
6
-
7
- <%_ if (dynamic && remotes.length > 0) { _%>
8
- import { loadRemote } from '@module-federation/enhanced/runtime';
9
- <%_ } _%>
10
-
11
- <%_ if (remotes.length > 0) {
12
- remotes.forEach(function(r) { _%>
13
- <%_ if (dynamic) { _%>
14
- const <%= r.className %> = React.lazy(() => loadRemote('<%= r.fileName %>/Module') as any)
15
- <%_ } else { _%>
16
- const <%= r.className %> = React.lazy(() => import('<%= r.fileName %>/Module'));
17
- <%_ } _%>
18
- <%_ }); _%>
19
- <%_ } _%>
20
-
21
- export function App() {
22
- return (
23
- <React.Suspense fallback={null}>
24
- <ul>
25
- <li><Link to="/">Home</Link></li>
26
- <%_ remotes.forEach(function(r) { _%>
27
- <li><Link to="/<%=r.fileName%>"><%=r.className%></Link></li>
28
- <%_ }); _%>
29
- </ul>
30
- <Routes>
31
- <%_ if (!minimal) { _%>
32
- <Route path="/" element={<NxWelcome title="<%= projectName %>"/>} />
33
- <%_ } _%>
34
- <%_ remotes.forEach(function(r) { _%>
35
- <Route path="/<%=r.fileName%>" element={<<%= r.className %>/>} />
36
- <%_ }); _%>
37
- </Routes>
38
- </React.Suspense>
39
- );
40
- }
41
-
42
- export default App;
@@ -1,13 +0,0 @@
1
- <%_ if (dynamic) { _%>
2
- import { init } from '@module-federation/enhanced/runtime';
3
-
4
- fetch('/assets/module-federation.manifest.json')
5
- .then((res) => res.json())
6
- .then((remotes: Record<string, string>) =>
7
- Object.entries(remotes).map(([name, entry]) => ({ name, entry }))
8
- )
9
- .then((remotes) => init({ name: '<%= projectName %>', remotes }))
10
- .then(() => import('./bootstrap').catch(err => console.error(err)));
11
- <%_ } else { _%>
12
- import('./bootstrap').catch(err => console.error(err));
13
- <%_ } _%>
@@ -1,19 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../dist/out-tsc",
5
- "types": [
6
- "node",
7
- "@nx/react/typings/cssmodule.d.ts",
8
- "@nx/react/typings/image.d.ts"
9
- ]
10
- },
11
- "include": [
12
- "src/**/*.js",
13
- "src/**/*.jsx",
14
- "src/**/*.ts",
15
- "src/**/*.tsx",
16
- "webpack.config.ts",
17
- "webpack.prod.config.ts"
18
- ]
19
- }
@@ -1,24 +0,0 @@
1
- /**
2
- * Nx requires a default export of the config to allow correct resolution of the module federation graph.
3
- **/
4
- module.exports = {
5
- name: '<%= projectName %>',
6
- /**
7
- * To use a remote that does not exist in your current Nx Workspace
8
- * You can use the tuple-syntax to define your remote
9
- *
10
- * remotes: [['my-external-remote', 'https://nx-angular-remote.netlify.app']]
11
- *
12
- * You _may_ need to add a `remotes.d.ts` file to your `src/` folder declaring the external remote for tsc, with the
13
- * following content:
14
- *
15
- * declare module 'my-external-remote';
16
- *
17
- */
18
- remotes: [
19
- <%_ if (static) {
20
- remotes.forEach(function(r) { _%>
21
- "<%= r.fileName %>",
22
- <%_ }); } _%>
23
- ],
24
- };
@@ -1,42 +0,0 @@
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');
5
-
6
- const config = require('./module-federation.config');
7
-
8
- module.exports = {
9
- // rspack-cli dev mode defaults this on; it breaks module federation.
10
- lazyCompilation: false,
11
- output: {
12
- path: join(__dirname, '<%= rspackPluginOptions.outputPath %>'),
13
- publicPath: 'auto'
14
- },
15
- devServer: {
16
- port: <%= port %>,
17
- historyApiFallback: {
18
- index: '/index.html',
19
- disableDotRule: true,
20
- htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
21
- },
22
- },
23
- plugins: [
24
- new NxAppRspackPlugin({
25
- tsConfig: '<%= rspackPluginOptions.tsConfig %>',
26
- main: '<%= rspackPluginOptions.main %>',
27
- index: '<%= rspackPluginOptions.index %>',
28
- baseHref: '<%= rspackPluginOptions.baseHref %>',
29
- assets: <%- JSON.stringify(rspackPluginOptions.assets) %>,
30
- styles: <%- JSON.stringify(rspackPluginOptions.styles) %>,
31
- outputHashing: process.env['NODE_ENV'] === 'production' ? 'all' : 'none',
32
- optimization: process.env['NODE_ENV'] === 'production',
33
- }),
34
- new NxReactRspackPlugin({
35
- // Uncomment this line if you don't want to use SVGR
36
- // See: https://react-svgr.com/
37
- // svgr: false
38
- }),
39
- new NxModuleFederationPlugin({ config }, { dts: false }),
40
- new NxModuleFederationDevServerPlugin({ config }),
41
- ],
42
- };
@@ -1,66 +0,0 @@
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');
5
-
6
- const baseConfig = require('./module-federation.config');
7
-
8
- const prodConfig = {
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
- ],
32
- };
33
-
34
- module.exports = {
35
- output: {
36
- path: join(__dirname, '<%= rspackPluginOptions.outputPath %>'),
37
- publicPath: 'auto'
38
- },
39
- devServer: {
40
- port: <%= port %>,
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,27 +0,0 @@
1
- // @ts-check
2
-
3
- /**
4
- * @type {import('@nx/module-federation').ModuleFederationConfig}
5
- **/
6
- const moduleFederationConfig = {
7
- name: '<%= projectName %>',
8
- remotes: [
9
- <%_ if (static) {
10
- remotes.forEach(function(r) { _%>
11
- "<%= r.fileName %>",
12
- <%_ });
13
- }
14
- _%>
15
- ],
16
- shared: (libraryName, libraryConfig) => {
17
- return {
18
- ...libraryConfig,
19
- eager: true
20
- }
21
- },
22
- };
23
-
24
- /**
25
- * Nx requires a default export of the config to allow correct resolution of the module federation graph.
26
- **/
27
- module.exports = moduleFederationConfig;
@@ -1,68 +0,0 @@
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
- // rspack-cli dev mode defaults this on; it breaks module federation.
12
- lazyCompilation: false,
13
- output: {
14
- path: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'browser'),
15
- publicPath: 'auto'
16
- },
17
- devServer: {
18
- port: <%= port %>,
19
- historyApiFallback: {
20
- index: '/index.html',
21
- disableDotRule: true,
22
- htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
23
- },
24
- devMiddleware: {
25
- writeToDisk: (file: string) => !file.includes('.hot-update.'),
26
- },
27
- },
28
- plugins: [
29
- new NxAppRspackPlugin({
30
- tsConfig: '<%= rspackPluginOptions.tsConfig %>',
31
- main: '<%= rspackPluginOptions.main %>',
32
- index: '<%= rspackPluginOptions.index %>',
33
- baseHref: '<%= rspackPluginOptions.baseHref %>',
34
- assets: <%- JSON.stringify(rspackPluginOptions.assets) %>,
35
- styles: <%- JSON.stringify(rspackPluginOptions.styles) %>,
36
- outputHashing: process.env['NODE_ENV'] === 'production' ? 'all' : 'none',
37
- optimization: process.env['NODE_ENV'] === 'production',
38
- }),
39
- new NxReactRspackPlugin({
40
- // Uncomment this line if you don't want to use SVGR
41
- // See: https://react-svgr.com/
42
- // svgr: false
43
- }),
44
- new NxModuleFederationPlugin({ config: browserMfConfig }, { dts: false }),
45
- ],
46
- };
47
-
48
- const serverRspackConfig = {
49
- name: 'server',
50
- target: 'async-node',
51
- output: {
52
- path: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'server'),
53
- filename: 'server.js'
54
- },
55
- plugins: [
56
- new NxAppRspackPlugin({
57
- outputPath: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'server'),
58
- outputFileName: 'server.js',
59
- tsConfig: '<%= rspackPluginOptions.tsConfig %>',
60
- main: '<%= rspackPluginOptions.mainServer %>',
61
- baseHref: '<%= rspackPluginOptions.baseHref %>',
62
- }),
63
- new NxModuleFederationPlugin({ config: serverMfConfig, isServer: true }, { dts: false }),
64
- new NxModuleFederationSSRDevServerPlugin({ config: serverMfConfig }),
65
- ],
66
- };
67
-
68
- module.exports = [browserRspackConfig, serverRspackConfig];
@@ -1,28 +0,0 @@
1
- import * as path from 'path';
2
- import express from 'express';
3
- import cors from 'cors';
4
-
5
- import { handleRequest } from './src/main.server';
6
-
7
- const port = process.env['PORT'] || <%= port %>;
8
- const app = express();
9
-
10
- const browserDist = path.join(process.cwd(), '<%= rspackPluginOptions.outputPath %>', 'browser');
11
- const indexPath = path.join(browserDist, 'index.html');
12
-
13
- app.use(cors());
14
-
15
- app.get(
16
- '*.*',
17
- express.static(browserDist, {
18
- maxAge: '1y',
19
- })
20
- );
21
-
22
- app.use('*', handleRequest(indexPath));
23
-
24
- const server = app.listen(port, () => {
25
- console.log(`Express server listening on http://localhost:${port}`);
26
- });
27
-
28
- server.on('error', console.error);
@@ -1,49 +0,0 @@
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,17 +0,0 @@
1
- {
2
- "extends": "./tsconfig.app.json",
3
- "compilerOptions": {
4
- "outDir": "../../out-tsc/server",
5
- "target": "es2019",
6
- "types": [
7
- "node",
8
- "@nx/react/typings/cssmodule.d.ts",
9
- "@nx/react/typings/image.d.ts"
10
- ]
11
- },
12
- "include": [
13
- "src/remotes.d.ts",
14
- "src/main.server.tsx",
15
- "server.ts"
16
- ]
17
- }
@@ -1,22 +0,0 @@
1
- import type { ModuleFederationConfig } from '@nx/module-federation';
2
-
3
- const config: ModuleFederationConfig = {
4
- name: '<%= projectName %>',
5
- remotes: [
6
- <%_ if (static) {
7
- remotes.forEach(function(r) { _%>
8
- "<%= r.fileName %>",
9
- <%_ }); } _%>
10
- ],
11
- shared: (libraryName, libraryConfig) => {
12
- return {
13
- ...libraryConfig,
14
- eager: true
15
- }
16
- },
17
- };
18
-
19
- /**
20
- * Nx requires a default export of the config to allow correct resolution of the module federation graph.
21
- **/
22
- export default config;
@@ -1,68 +0,0 @@
1
- import { NxAppRspackPlugin } from '@nx/rspack/app-plugin.js';
2
- import { NxReactRspackPlugin } from '@nx/rspack/react-plugin.js';
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
- // rspack-cli dev mode defaults this on; it breaks module federation.
12
- lazyCompilation: false,
13
- output: {
14
- path: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'browser'),
15
- publicPath: 'auto'
16
- },
17
- devServer: {
18
- port: <%= port %>,
19
- historyApiFallback: {
20
- index: '/index.html',
21
- disableDotRule: true,
22
- htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
23
- },
24
- devMiddleware: {
25
- writeToDisk: (file: string) => !file.includes('.hot-update.'),
26
- },
27
- },
28
- plugins: [
29
- new NxAppRspackPlugin({
30
- tsConfig: '<%= rspackPluginOptions.tsConfig %>',
31
- main: '<%= rspackPluginOptions.main %>',
32
- index: '<%= rspackPluginOptions.index %>',
33
- baseHref: '<%= rspackPluginOptions.baseHref %>',
34
- assets: <%- JSON.stringify(rspackPluginOptions.assets) %>,
35
- styles: <%- JSON.stringify(rspackPluginOptions.styles) %>,
36
- outputHashing: process.env['NODE_ENV'] === 'production' ? 'all' : 'none',
37
- optimization: process.env['NODE_ENV'] === 'production',
38
- }),
39
- new NxReactRspackPlugin({
40
- // Uncomment this line if you don't want to use SVGR
41
- // See: https://react-svgr.com/
42
- // svgr: false
43
- }),
44
- new NxModuleFederationPlugin({ config: browserMfConfig }, { dts: false }),
45
- ],
46
- };
47
-
48
- const serverRspackConfig = {
49
- name: 'server',
50
- target: 'async-node',
51
- output: {
52
- path: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'server'),
53
- filename: 'server.js'
54
- },
55
- plugins: [
56
- new NxAppRspackPlugin({
57
- outputPath: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'server'),
58
- outputFileName: 'server.js',
59
- tsConfig: '<%= rspackPluginOptions.tsConfig %>',
60
- main: '<%= rspackPluginOptions.mainServer %>',
61
- baseHref: '<%= rspackPluginOptions.baseHref %>',
62
- }),
63
- new NxModuleFederationPlugin({ config: serverMfConfig, isServer: true }, { dts: false }),
64
- new NxModuleFederationSSRDevServerPlugin({ config: serverMfConfig }),
65
- ],
66
- };
67
-
68
- export default [browserRspackConfig, serverRspackConfig];
@@ -1,28 +0,0 @@
1
- import * as path from 'path';
2
- import express from 'express';
3
- import cors from 'cors';
4
-
5
- import { handleRequest } from './src/main.server';
6
-
7
- const port = process.env['PORT'] || <%= port %>;
8
- const app = express();
9
-
10
- const browserDist = path.join(process.cwd(), '<%= rspackPluginOptions.outputPath %>', 'browser');
11
- const indexPath = path.join(browserDist, 'index.html');
12
-
13
- app.use(cors());
14
-
15
- app.get(
16
- '*.*',
17
- express.static(browserDist, {
18
- maxAge: '1y',
19
- })
20
- );
21
-
22
- app.use('*', handleRequest(indexPath));
23
-
24
- const server = app.listen(port, () => {
25
- console.log(`Express server listening on http://localhost:${port}`);
26
- });
27
-
28
- server.on('error', console.error);
@@ -1,49 +0,0 @@
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,17 +0,0 @@
1
- {
2
- "extends": "./tsconfig.app.json",
3
- "compilerOptions": {
4
- "outDir": "../../out-tsc/server",
5
- "target": "es2019",
6
- "types": [
7
- "node",
8
- "@nx/react/typings/cssmodule.d.ts",
9
- "@nx/react/typings/image.d.ts"
10
- ]
11
- },
12
- "include": [
13
- "src/remotes.d.ts",
14
- "src/main.server.tsx",
15
- "server.ts"
16
- ]
17
- }