@nx/react 19.4.1 → 19.5.0-beta.0

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/babel.d.ts CHANGED
@@ -1,13 +1,17 @@
1
1
  interface NxReactBabelOptions {
2
- development?: boolean;
3
- runtime?: string;
4
- importSource?: string;
5
- useBuiltIns?: boolean | string;
6
2
  decorators?: {
7
3
  decoratorsBeforeExport?: boolean;
8
4
  legacy?: boolean;
9
5
  };
6
+ development?: boolean;
7
+ importSource?: string;
10
8
  loose?: boolean;
9
+ reactCompiler?: boolean | {
10
+ compilationMode?: string;
11
+ sources?: (filename: string) => boolean;
12
+ };
13
+ runtime?: string;
14
+ useBuiltIns?: boolean | string;
11
15
  /** @deprecated Use `loose` option instead of `classProperties.loose`
12
16
  */
13
17
  classProperties?: {
package/babel.js CHANGED
@@ -8,7 +8,10 @@ module.exports = function (api, options) {
8
8
  * pagesDir is set when being transpiled by Next.js
9
9
  */
10
10
  const isNextJs = api.caller((caller) => caller?.pagesDir);
11
- const presets = [[require.resolve('@nx/js/babel'), options]];
11
+ const presets = [
12
+ [require.resolve('@nx/js/babel'), options],
13
+ ];
14
+ const plugins = [];
12
15
  /**
13
16
  * Next.js already includes the preset-react, and including it
14
17
  * the second time here results in having two instances of this preset.
@@ -29,8 +32,21 @@ module.exports = function (api, options) {
29
32
  }),
30
33
  ]);
31
34
  }
35
+ if (options.reactCompiler) {
36
+ try {
37
+ const reactCompilerPlugin = require.resolve('babel-plugin-react-compiler');
38
+ plugins.push([
39
+ reactCompilerPlugin,
40
+ typeof options.reactCompiler !== 'boolean' ? options.reactCompiler : {},
41
+ ]);
42
+ }
43
+ catch {
44
+ throw new Error(`Could not find "babel-plugin-react-compiler". Did you install it?`);
45
+ }
46
+ }
32
47
  return {
33
48
  presets,
49
+ plugins,
34
50
  };
35
51
  };
36
52
  function getReactPresetOptions({ presetOptions, env, }) {
package/migrations.json CHANGED
@@ -202,6 +202,15 @@
202
202
  "alwaysAddToPackageJson": false
203
203
  }
204
204
  }
205
+ },
206
+ "19.5.0-module-federation": {
207
+ "version": "19.5.0-beta.0",
208
+ "packages": {
209
+ "@module-federation/node": {
210
+ "version": "^2.3.0",
211
+ "alwaysAddToPackageJson": false
212
+ }
213
+ }
205
214
  }
206
215
  }
207
216
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/react",
3
- "version": "19.4.1",
3
+ "version": "19.5.0-beta.0",
4
4
  "private": false,
5
5
  "description": "The React plugin for Nx contains executors and generators for managing React applications and libraries within an Nx workspace. It provides:\n\n\n- Integration with libraries such as Jest, Vitest, Playwright, Cypress, and Storybook.\n\n- Generators for applications, libraries, components, hooks, and more.\n\n- Library build support for publishing packages to npm or other registries.\n\n- Utilities for automatic workspace refactoring.",
6
6
  "repository": {
@@ -38,11 +38,12 @@
38
38
  "file-loader": "^6.2.0",
39
39
  "minimatch": "9.0.3",
40
40
  "tslib": "^2.3.0",
41
- "@nx/devkit": "19.4.1",
42
- "@nx/js": "19.4.1",
43
- "@nx/eslint": "19.4.1",
44
- "@nx/web": "19.4.1",
45
- "@nrwl/react": "19.4.1"
41
+ "@module-federation/enhanced": "~0.2.3",
42
+ "@nx/devkit": "19.5.0-beta.0",
43
+ "@nx/js": "19.5.0-beta.0",
44
+ "@nx/eslint": "19.5.0-beta.0",
45
+ "@nx/web": "19.5.0-beta.0",
46
+ "@nrwl/react": "19.5.0-beta.0"
46
47
  },
47
48
  "publishConfig": {
48
49
  "access": "public"
@@ -13,6 +13,7 @@ const setup_ssr_for_host_1 = require("./lib/setup-ssr-for-host");
13
13
  const update_module_federation_e2e_project_1 = require("./lib/update-module-federation-e2e-project");
14
14
  const add_mf_env_to_inputs_1 = require("../../utils/add-mf-env-to-inputs");
15
15
  const js_1 = require("@nx/js");
16
+ const versions_1 = require("../../utils/versions");
16
17
  async function hostGenerator(host, schema) {
17
18
  return hostGeneratorInternal(host, {
18
19
  projectNameAndRootFormat: 'derived',
@@ -97,6 +98,8 @@ async function hostGeneratorInternal(host, schema) {
97
98
  host.delete((0, devkit_1.joinPathFragments)(options.appProjectRoot, 'tsconfig.lint.json'));
98
99
  }
99
100
  (0, add_mf_env_to_inputs_1.addMfEnvToTargetDefaultInputs)(host);
101
+ const installTask = (0, devkit_1.addDependenciesToPackageJson)(host, {}, { '@module-federation/enhanced': versions_1.moduleFederationEnhancedVersion });
102
+ tasks.push(installTask);
100
103
  if (!options.skipFormat) {
101
104
  await (0, devkit_1.formatFiles)(host);
102
105
  }
@@ -14,6 +14,7 @@ const add_remote_to_dynamic_host_1 = require("./lib/add-remote-to-dynamic-host")
14
14
  const add_mf_env_to_inputs_1 = require("../../utils/add-mf-env-to-inputs");
15
15
  const maybe_js_1 = require("../../utils/maybe-js");
16
16
  const js_1 = require("@nx/js");
17
+ const versions_1 = require("../../utils/versions");
17
18
  function addModuleFederationFiles(host, options) {
18
19
  const templateVariables = {
19
20
  ...(0, devkit_1.names)(options.name),
@@ -104,6 +105,8 @@ async function remoteGeneratorInternal(host, schema) {
104
105
  (0, add_remote_to_dynamic_host_1.addRemoteToDynamicHost)(host, options.name, options.devServerPort, pathToMFManifest);
105
106
  }
106
107
  (0, add_mf_env_to_inputs_1.addMfEnvToTargetDefaultInputs)(host);
108
+ const installTask = (0, devkit_1.addDependenciesToPackageJson)(host, {}, { '@module-federation/enhanced': versions_1.moduleFederationEnhancedVersion });
109
+ tasks.push(installTask);
107
110
  if (!options.skipFormat) {
108
111
  await (0, devkit_1.formatFiles)(host);
109
112
  }
@@ -1,2 +1,2 @@
1
- import { ModuleFederationConfig } from '@nx/webpack/src/utils/module-federation';
2
- export declare function withModuleFederationForSSR(options: ModuleFederationConfig): Promise<(config: any) => any>;
1
+ import { ModuleFederationConfig, NxModuleFederationConfigOverride } from '@nx/webpack/src/utils/module-federation';
2
+ export declare function withModuleFederationForSSR(options: ModuleFederationConfig, configOverride?: NxModuleFederationConfigOverride): Promise<(config: any) => any>;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.withModuleFederationForSSR = void 0;
4
4
  const utils_1 = require("./utils");
5
- async function withModuleFederationForSSR(options) {
5
+ async function withModuleFederationForSSR(options, configOverride) {
6
6
  if (global.NX_GRAPH_CREATION) {
7
7
  return (config) => config;
8
8
  }
@@ -27,6 +27,10 @@ async function withModuleFederationForSSR(options) {
27
27
  type: 'commonjs-module',
28
28
  },
29
29
  isServer: true,
30
+ /**
31
+ * Apply user-defined config overrides
32
+ */
33
+ ...(configOverride ? configOverride : {}),
30
34
  }, {}), sharedLibraries.getReplacementPlugin());
31
35
  return config;
32
36
  };
@@ -1,7 +1,7 @@
1
- import { ModuleFederationConfig } from '@nx/webpack/src/utils/module-federation';
1
+ import { ModuleFederationConfig, NxModuleFederationConfigOverride } from '@nx/webpack/src/utils/module-federation';
2
2
  import type { AsyncNxComposableWebpackPlugin } from '@nx/webpack';
3
3
  /**
4
4
  * @param {ModuleFederationConfig} options
5
5
  * @return {Promise<AsyncNxComposableWebpackPlugin>}
6
6
  */
7
- export declare function withModuleFederation(options: ModuleFederationConfig): Promise<AsyncNxComposableWebpackPlugin>;
7
+ export declare function withModuleFederation(options: ModuleFederationConfig, configOverride?: NxModuleFederationConfigOverride): Promise<AsyncNxComposableWebpackPlugin>;
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.withModuleFederation = void 0;
4
4
  const utils_1 = require("./utils");
5
- const ModuleFederationPlugin = require("webpack/lib/container/ModuleFederationPlugin");
5
+ const webpack_1 = require("@module-federation/enhanced/webpack");
6
6
  const isVarOrWindow = (libType) => libType === 'var' || libType === 'window';
7
7
  /**
8
8
  * @param {ModuleFederationConfig} options
9
9
  * @return {Promise<AsyncNxComposableWebpackPlugin>}
10
10
  */
11
- async function withModuleFederation(options) {
11
+ async function withModuleFederation(options, configOverride) {
12
12
  if (global.NX_GRAPH_CREATION) {
13
13
  return (config) => config;
14
14
  }
@@ -32,7 +32,7 @@ async function withModuleFederation(options) {
32
32
  ...config.experiments,
33
33
  outputModule: !isGlobal,
34
34
  };
35
- config.plugins.push(new ModuleFederationPlugin({
35
+ config.plugins.push(new webpack_1.ModuleFederationPlugin({
36
36
  name: options.name,
37
37
  library: options.library ?? { type: 'module' },
38
38
  filename: 'remoteEntry.js',
@@ -48,6 +48,10 @@ async function withModuleFederation(options) {
48
48
  * { appY: 'appY@http://localhost:3002/remoteEntry.js' }
49
49
  */
50
50
  ...(isGlobal ? { remoteType: 'script' } : {}),
51
+ /**
52
+ * Apply user-defined config overrides
53
+ */
54
+ ...(configOverride ? configOverride : {}),
51
55
  }), sharedLibraries.getReplacementPlugin());
52
56
  return config;
53
57
  };
@@ -36,7 +36,8 @@ export declare const typesExpressVersion = "4.17.17";
36
36
  export declare const isbotVersion = "^3.6.5";
37
37
  export declare const corsVersion = "~2.8.5";
38
38
  export declare const typesCorsVersion = "~2.8.12";
39
- export declare const moduleFederationNodeVersion = "~0.9.9";
39
+ export declare const moduleFederationNodeVersion = "^2.3.0";
40
+ export declare const moduleFederationEnhancedVersion = "~0.2.3";
40
41
  export declare const lessVersion = "3.12.2";
41
42
  export declare const sassVersion = "^1.55.0";
42
43
  export declare const rollupPluginUrlVersion = "^8.0.2";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.swcPluginStyledComponentsVersion = exports.swcPluginEmotionVersion = exports.swcPluginStyledJsxVersion = exports.svgrRollupVersion = exports.rollupPluginUrlVersion = exports.sassVersion = exports.lessVersion = exports.moduleFederationNodeVersion = exports.typesCorsVersion = exports.corsVersion = exports.isbotVersion = exports.typesExpressVersion = exports.expressVersion = exports.autoprefixerVersion = exports.tailwindcssVersion = exports.postcssVersion = exports.tsLibVersion = exports.babelPluginStyledComponentsVersion = exports.eslintPluginReactHooksVersion = exports.eslintPluginReactVersion = exports.eslintPluginJsxA11yVersion = exports.eslintPluginImportVersion = exports.reactTestRendererVersion = exports.reactReduxVersion = exports.reduxjsToolkitVersion = exports.testingLibraryReactVersion = exports.reactRouterDomVersion = exports.styledJsxVersion = exports.emotionBabelPlugin = exports.emotionReactVersion = exports.emotionStyledVersion = exports.typesStyledComponentsVersion = exports.styledComponentsVersion = exports.babelCoreVersion = exports.babelPresetReactVersion = exports.typesNodeVersion = exports.typesReactIsVersion = exports.typesReactDomVersion = exports.typesReactVersion = exports.babelLoaderVersion = exports.swcLoaderVersion = exports.reactIsVersion = exports.reactDomVersion = exports.reactVersion = exports.nxRspackVersion = exports.nxVersion = void 0;
3
+ exports.swcPluginStyledComponentsVersion = exports.swcPluginEmotionVersion = exports.swcPluginStyledJsxVersion = exports.svgrRollupVersion = exports.rollupPluginUrlVersion = exports.sassVersion = exports.lessVersion = exports.moduleFederationEnhancedVersion = exports.moduleFederationNodeVersion = exports.typesCorsVersion = exports.corsVersion = exports.isbotVersion = exports.typesExpressVersion = exports.expressVersion = exports.autoprefixerVersion = exports.tailwindcssVersion = exports.postcssVersion = exports.tsLibVersion = exports.babelPluginStyledComponentsVersion = exports.eslintPluginReactHooksVersion = exports.eslintPluginReactVersion = exports.eslintPluginJsxA11yVersion = exports.eslintPluginImportVersion = exports.reactTestRendererVersion = exports.reactReduxVersion = exports.reduxjsToolkitVersion = exports.testingLibraryReactVersion = exports.reactRouterDomVersion = exports.styledJsxVersion = exports.emotionBabelPlugin = exports.emotionReactVersion = exports.emotionStyledVersion = exports.typesStyledComponentsVersion = exports.styledComponentsVersion = exports.babelCoreVersion = exports.babelPresetReactVersion = exports.typesNodeVersion = exports.typesReactIsVersion = exports.typesReactDomVersion = exports.typesReactVersion = exports.babelLoaderVersion = exports.swcLoaderVersion = exports.reactIsVersion = exports.reactDomVersion = exports.reactVersion = exports.nxRspackVersion = exports.nxVersion = void 0;
4
4
  exports.nxVersion = require('../../package.json').version;
5
5
  // Always pull the latest version until we merge rspack plugin into the repo.
6
6
  exports.nxRspackVersion = '*';
@@ -42,7 +42,8 @@ exports.typesExpressVersion = '4.17.17';
42
42
  exports.isbotVersion = '^3.6.5';
43
43
  exports.corsVersion = '~2.8.5';
44
44
  exports.typesCorsVersion = '~2.8.12';
45
- exports.moduleFederationNodeVersion = '~0.9.9';
45
+ exports.moduleFederationNodeVersion = '^2.3.0';
46
+ exports.moduleFederationEnhancedVersion = '~0.2.3';
46
47
  // style preprocessors
47
48
  exports.lessVersion = '3.12.2';
48
49
  exports.sassVersion = '^1.55.0';