@nx/react 23.2.0-beta.7 → 23.2.0-beta.9

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.
@@ -1,5 +1,4 @@
1
- import { withModuleFederation } from '@nx/module-federation/webpack';
2
- import { withModuleFederationForSSR } from '@nx/module-federation/webpack';
1
+ import { withModuleFederation, withModuleFederationForSSR } from '@nx/module-federation/webpack';
3
2
  /**
4
3
  * @deprecated Use `@nx/module-federation/webpack` instead. This will be removed in Nx v22.
5
4
  */
@@ -3,8 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.withModuleFederationForSSR = exports.withModuleFederation = void 0;
4
4
  const webpack_1 = require("@nx/module-federation/webpack");
5
5
  Object.defineProperty(exports, "withModuleFederation", { enumerable: true, get: function () { return webpack_1.withModuleFederation; } });
6
- const webpack_2 = require("@nx/module-federation/webpack");
7
- Object.defineProperty(exports, "withModuleFederationForSSR", { enumerable: true, get: function () { return webpack_2.withModuleFederationForSSR; } });
6
+ Object.defineProperty(exports, "withModuleFederationForSSR", { enumerable: true, get: function () { return webpack_1.withModuleFederationForSSR; } });
8
7
  // Support for older generated code: `const withModuleFederation = require('@nx/react/module-federation')`
9
8
  /**
10
9
  * @deprecated Use `@nx/module-federation/webpack` instead. This will be removed in Nx v22.
@@ -18,4 +17,4 @@ module.exports.withModuleFederation = webpack_1.withModuleFederation;
18
17
  /**
19
18
  * @deprecated Use `@nx/module-federation/webpack` instead. This will be removed in Nx v22.
20
19
  */
21
- module.exports.withModuleFederationForSSR = webpack_2.withModuleFederationForSSR;
20
+ module.exports.withModuleFederationForSSR = webpack_1.withModuleFederationForSSR;
@@ -78,6 +78,11 @@ const loaderModulesOptions = {
78
78
  modules: {
79
79
  mode: 'local',
80
80
  getLocalIdent: webpack_1.getCSSModuleLocalIdent,
81
+ // css-loader 7 defaults namedExport to true, and to camel-case-only
82
+ // locals when it is off. Generated components import the default
83
+ // export and reference class names as authored, so pin both.
84
+ namedExport: false,
85
+ exportLocalsConvention: 'asIs',
81
86
  },
82
87
  importLoaders: 1,
83
88
  };
@@ -6,9 +6,8 @@ const tslib_1 = require("tslib");
6
6
  const internal_1 = require("@nx/devkit/internal");
7
7
  const assert_supported_react_version_1 = require("../../utils/assert-supported-react-version");
8
8
  const devkit_1 = require("@nx/devkit");
9
- const internal_2 = require("@nx/devkit/internal");
10
9
  const js_1 = require("@nx/js");
11
- const internal_3 = require("@nx/js/internal");
10
+ const internal_2 = require("@nx/js/internal");
12
11
  const create_ts_config_1 = require("../../utils/create-ts-config");
13
12
  const init_1 = tslib_1.__importDefault(require("../init/init"));
14
13
  const create_application_files_1 = require("./lib/create-application-files");
@@ -35,13 +34,12 @@ async function applicationGenerator(tree, schema) {
35
34
  async function applicationGeneratorInternal(tree, schema) {
36
35
  (0, assert_supported_react_version_1.assertSupportedReactVersion)(tree);
37
36
  const tasks = [];
38
- const addTsPlugin = (0, internal_3.shouldConfigureTsSolutionSetup)(tree, schema.addPlugin, schema.useTsSolution);
37
+ const addTsPlugin = (0, internal_2.shouldConfigureTsSolutionSetup)(tree, schema.addPlugin, schema.useTsSolution);
39
38
  const jsInitTask = await (0, js_1.initGenerator)(tree, {
40
39
  ...schema,
41
40
  tsConfigName: schema.rootProject ? 'tsconfig.json' : 'tsconfig.base.json',
42
41
  skipFormat: true,
43
42
  addTsPlugin,
44
- formatter: schema.formatter,
45
43
  platform: 'web',
46
44
  });
47
45
  tasks.push(jsInitTask);
@@ -49,22 +47,11 @@ async function applicationGeneratorInternal(tree, schema) {
49
47
  options.useReactRouter =
50
48
  options.routing && options.bundler === 'vite'
51
49
  ? (options.useReactRouter ??
52
- (await (0, internal_1.promptWhenInteractive)({
53
- name: 'response',
54
- message: 'Would you like to use react-router for server-side rendering?',
55
- type: 'autocomplete',
56
- choices: [
57
- {
58
- name: 'Yes',
59
- message: 'I want to use react-router [ https://reactrouter.com/start/framework/routing ]',
60
- },
61
- {
62
- name: 'No',
63
- message: 'I do not want to use react-router for server-side rendering',
64
- },
65
- ],
66
- initial: 0,
67
- }, { response: 'No' }).then((r) => r.response === 'Yes')))
50
+ ((0, internal_1.isInteractive)()
51
+ ? await (0, internal_1.confirmationPrompt)({
52
+ message: 'Would you like to use react-router for server-side rendering?',
53
+ })
54
+ : false))
68
55
  : false;
69
56
  const initTask = await (0, init_1.default)(tree, {
70
57
  ...options,
@@ -76,7 +63,7 @@ async function applicationGeneratorInternal(tree, schema) {
76
63
  const nxJson = (0, devkit_1.readNxJson)(tree) ?? {};
77
64
  const existing = findBuildDefault(nxJson.targetDefaults);
78
65
  if (!existing) {
79
- (0, internal_2.upsertTargetDefault)(tree, nxJson, {
66
+ (0, internal_1.upsertTargetDefault)(tree, nxJson, {
80
67
  target: 'build',
81
68
  cache: true,
82
69
  dependsOn: ['^build'],
@@ -84,7 +71,7 @@ async function applicationGeneratorInternal(tree, schema) {
84
71
  (0, devkit_1.updateNxJson)(tree, nxJson);
85
72
  }
86
73
  else if (!existing.dependsOn) {
87
- (0, internal_2.upsertTargetDefault)(tree, nxJson, {
74
+ (0, internal_1.upsertTargetDefault)(tree, nxJson, {
88
75
  target: 'build',
89
76
  dependsOn: ['^build'],
90
77
  });
@@ -108,7 +95,7 @@ async function applicationGeneratorInternal(tree, schema) {
108
95
  // If we are using the new TS solution
109
96
  // We need to update the workspace file (package.json or pnpm-workspaces.yaml) to include the new project
110
97
  if (options.isUsingTsSolutionConfig) {
111
- await (0, internal_3.addProjectToTsSolutionWorkspace)(tree, options.appProjectRoot);
98
+ await (0, internal_2.addProjectToTsSolutionWorkspace)(tree, options.appProjectRoot);
112
99
  }
113
100
  const lintTask = await (0, add_linting_1.addLinting)(tree, options);
114
101
  tasks.push(lintTask);
@@ -157,14 +144,14 @@ async function applicationGeneratorInternal(tree, schema) {
157
144
  });
158
145
  }
159
146
  // Only for the new TS solution
160
- (0, internal_3.updateTsconfigFiles)(tree, options.appProjectRoot, 'tsconfig.app.json', {
147
+ (0, internal_2.updateTsconfigFiles)(tree, options.appProjectRoot, 'tsconfig.app.json', {
161
148
  jsx: 'react-jsx',
162
149
  module: 'esnext',
163
150
  moduleResolution: 'bundler',
164
151
  }, options.linter === 'eslint'
165
152
  ? ['eslint.config.js', 'eslint.config.cjs', 'eslint.config.mjs']
166
153
  : undefined, options.useReactRouter ? 'app' : 'src');
167
- (0, internal_3.sortPackageJsonFields)(tree, options.appProjectRoot);
154
+ (0, internal_2.sortPackageJsonFields)(tree, options.appProjectRoot);
168
155
  if (!options.skipFormat) {
169
156
  await (0, devkit_1.formatFiles)(tree);
170
157
  }
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addLinting = addLinting;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const internal_1 = require("@nx/eslint/internal");
6
- const devkit_2 = require("@nx/devkit");
7
6
  const internal_2 = require("@nx/js/internal");
8
7
  const lint_1 = require("../../../utils/lint");
9
8
  const versions_1 = require("../../../utils/versions");
@@ -43,7 +42,7 @@ async function addLinting(host, options) {
43
42
  }
44
43
  }
45
44
  if (!options.skipPackageJson) {
46
- const installTask = (0, devkit_2.addDependenciesToPackageJson)(host, lint_1.extraEslintDependencies.dependencies, lint_1.extraEslintDependencies.devDependencies, undefined, true);
45
+ const installTask = (0, devkit_1.addDependenciesToPackageJson)(host, lint_1.extraEslintDependencies.dependencies, lint_1.extraEslintDependencies.devDependencies, undefined, true);
47
46
  const addSwcTask = (0, internal_2.addSwcDependencies)(host);
48
47
  tasks.push(installTask, addSwcTask);
49
48
  }
@@ -51,7 +50,7 @@ async function addLinting(host, options) {
51
50
  await ignoreReactRouterFilesInEslintConfig(host, options.appProjectRoot);
52
51
  }
53
52
  }
54
- return (0, devkit_2.runTasksInSerial)(...tasks);
53
+ return (0, devkit_1.runTasksInSerial)(...tasks);
55
54
  }
56
55
  async function ignoreReactRouterFilesInEslintConfig(tree, projectRoot) {
57
56
  if (!(0, internal_2.detectLinters)(tree).includes('eslint')) {
@@ -29,7 +29,7 @@ export declare function getDefaultTemplateVariables(host: Tree, options: Normali
29
29
  minimal?: boolean;
30
30
  nxCloudToken?: string;
31
31
  useTsSolution?: boolean;
32
- formatter?: 'prettier' | 'none';
32
+ formatter?: 'prettier' | 'oxfmt' | 'none';
33
33
  useProjectJson?: boolean;
34
34
  linter: import("@nx/js").LinterType;
35
35
  projectName: string;
@@ -35,7 +35,7 @@ export interface Schema {
35
35
  addPlugin?: boolean;
36
36
  nxCloudToken?: string;
37
37
  useTsSolution?: boolean;
38
- formatter?: 'prettier' | 'none';
38
+ formatter?: 'prettier' | 'oxfmt' | 'none';
39
39
  useProjectJson?: boolean;
40
40
  port?: number;
41
41
  }
@@ -102,6 +102,11 @@
102
102
  "enum": ["eslint", "oxlint", "none"],
103
103
  "x-priority": "important"
104
104
  },
105
+ "formatter": {
106
+ "description": "The tool to use for code formatting.",
107
+ "type": "string",
108
+ "enum": ["none", "prettier", "oxfmt"]
109
+ },
105
110
  "unitTestRunner": {
106
111
  "type": "string",
107
112
  "enum": ["vitest", "jest", "none"],
@@ -17,7 +17,7 @@ module.exports = {
17
17
  */
18
18
  remotes: [
19
19
  <%_ if (static) {
20
- remotes.forEach(function(r) { %>
20
+ remotes.forEach(function(r) { _%>
21
21
  "<%= r.fileName %>",
22
22
  <%_ }); } _%>
23
23
  ],
@@ -2,16 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setupSsrForHost = setupSsrForHost;
4
4
  const devkit_1 = require("@nx/devkit");
5
- const devkit_2 = require("@nx/devkit");
6
5
  const versions_1 = require("../../../utils/versions");
7
6
  const create_application_files_1 = require("../../application/lib/create-application-files");
8
7
  async function setupSsrForHost(tree, options, appName, defaultRemoteManifest) {
9
8
  const tasks = [];
10
- let project = (0, devkit_2.readProjectConfiguration)(tree, appName);
9
+ let project = (0, devkit_1.readProjectConfiguration)(tree, appName);
11
10
  if (options.bundler !== 'rspack') {
12
11
  project.targets.serve.executor =
13
12
  '@nx/react:module-federation-ssr-dev-server';
14
- (0, devkit_2.updateProjectConfiguration)(tree, appName, project);
13
+ (0, devkit_1.updateProjectConfiguration)(tree, appName, project);
15
14
  }
16
15
  const pathToModuleFederationSsrFiles = options.typescriptConfiguration
17
16
  ? `${options.bundler === 'rspack' ? 'rspack-' : 'webpack-'}module-federation-ssr-ts`
@@ -28,7 +27,7 @@ async function setupSsrForHost(tree, options, appName, defaultRemoteManifest) {
28
27
  static: !options?.dynamic,
29
28
  remotes: defaultRemoteManifest.map(({ name, port }) => {
30
29
  return {
31
- ...(0, devkit_2.names)(name),
30
+ ...(0, devkit_1.names)(name),
32
31
  port,
33
32
  };
34
33
  }),
@@ -42,13 +41,13 @@ async function setupSsrForHost(tree, options, appName, defaultRemoteManifest) {
42
41
  browserBuildOutputPath: project.targets.build?.options?.outputPath,
43
42
  remotes: defaultRemoteManifest.map(({ name, port }) => {
44
43
  return {
45
- ...(0, devkit_2.names)(name),
44
+ ...(0, devkit_1.names)(name),
46
45
  port,
47
46
  };
48
47
  }),
49
48
  };
50
- (0, devkit_2.generateFiles)(tree, (0, devkit_2.joinPathFragments)(__dirname, `../files/${pathToModuleFederationSsrFiles}`), project.root, templateVariables);
51
- const installTask = (0, devkit_2.addDependenciesToPackageJson)(tree, {
49
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, `../files/${pathToModuleFederationSsrFiles}`), project.root, templateVariables);
50
+ const installTask = (0, devkit_1.addDependenciesToPackageJson)(tree, {
52
51
  '@module-federation/node': versions_1.moduleFederationNodeVersion,
53
52
  cors: versions_1.corsVersion,
54
53
  isbot: versions_1.isbotVersion,
@@ -56,5 +55,5 @@ async function setupSsrForHost(tree, options, appName, defaultRemoteManifest) {
56
55
  '@types/express': versions_1.typesExpressVersion,
57
56
  }, {}, undefined, true);
58
57
  tasks.push(installTask);
59
- return (0, devkit_2.runTasksInSerial)(...tasks);
58
+ return (0, devkit_1.runTasksInSerial)(...tasks);
60
59
  }
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.updateAppRoutes = updateAppRoutes;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const ast_utils_1 = require("../../../utils/ast-utils");
6
- const ast_utils_2 = require("../../../utils/ast-utils");
7
6
  const maybe_js_1 = require("../../../utils/maybe-js");
8
7
  const versions_1 = require("../../../utils/versions");
9
8
  const internal_1 = require("@nx/js/internal");
@@ -32,7 +31,7 @@ function updateAppRoutes(host, options) {
32
31
  const { content: componentContent, source: componentSource } = readComponent(host, appComponentPath);
33
32
  const isComponentRouterPresent = componentContent.match(/react-router-dom/);
34
33
  if (!isComponentRouterPresent) {
35
- const changes = (0, devkit_1.applyChangesToString)(componentContent, (0, ast_utils_2.addInitialRoutes)(appComponentPath, componentSource));
34
+ const changes = (0, devkit_1.applyChangesToString)(componentContent, (0, ast_utils_1.addInitialRoutes)(appComponentPath, componentSource));
36
35
  host.write(appComponentPath, changes);
37
36
  }
38
37
  }
@@ -2,12 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setupSsrForRemote = setupSsrForRemote;
4
4
  const devkit_1 = require("@nx/devkit");
5
- const devkit_2 = require("@nx/devkit");
6
5
  const versions_1 = require("../../../utils/versions");
7
6
  const create_application_files_1 = require("../../application/lib/create-application-files");
8
7
  async function setupSsrForRemote(tree, options, appName) {
9
8
  const tasks = [];
10
- const project = (0, devkit_2.readProjectConfiguration)(tree, appName);
9
+ const project = (0, devkit_1.readProjectConfiguration)(tree, appName);
11
10
  const pathToModuleFederationSsrFiles = options.typescriptConfiguration
12
11
  ? `${options.bundler === 'rspack' ? 'rspack-' : 'webpack-'}module-federation-ssr-ts`
13
12
  : `${options.bundler === 'rspack' ? 'rspack-' : 'webpack-'}module-federation-ssr`;
@@ -29,28 +28,28 @@ async function setupSsrForRemote(tree, options, appName) {
29
28
  browserBuildOutputPath: project.targets.build?.options?.outputPath,
30
29
  serverBuildOutputPath: project.targets.server?.options?.outputPath,
31
30
  };
32
- (0, devkit_2.generateFiles)(tree, (0, devkit_2.joinPathFragments)(__dirname, `../files/${pathToModuleFederationSsrFiles}`), project.root, templateVariables);
31
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, `../files/${pathToModuleFederationSsrFiles}`), project.root, templateVariables);
33
32
  // For hosts to use when running remotes in static mode.
34
33
  const originalOutputPath = (project.targets.build?.options?.outputPath ??
35
34
  options.isUsingTsSolutionConfig)
36
35
  ? 'dist'
37
- : (0, devkit_2.joinPathFragments)((0, devkit_1.offsetFromRoot)(options.appProjectRoot), 'dist', options.appProjectRoot != '.'
36
+ : (0, devkit_1.joinPathFragments)((0, devkit_1.offsetFromRoot)(options.appProjectRoot), 'dist', options.appProjectRoot != '.'
38
37
  ? options.appProjectRoot
39
38
  : options.projectName);
40
39
  const serverOptions = project.targets.server?.options;
41
40
  const serverOutputPath = serverOptions?.outputPath ??
42
- (0, devkit_2.joinPathFragments)(originalOutputPath, 'server');
41
+ (0, devkit_1.joinPathFragments)(originalOutputPath, 'server');
43
42
  const serverOutputName = serverOptions?.outputFileName ?? 'main.js';
44
43
  project.targets['serve-static'] = {
45
44
  dependsOn: ['build', 'server'],
46
45
  executor: 'nx:run-commands',
47
46
  defaultConfiguration: 'development',
48
47
  options: {
49
- command: `PORT=${options.devServerPort ?? 4200} node ${(0, devkit_2.joinPathFragments)(serverOutputPath, serverOutputName)}`,
48
+ command: `PORT=${options.devServerPort ?? 4200} node ${(0, devkit_1.joinPathFragments)(serverOutputPath, serverOutputName)}`,
50
49
  },
51
50
  };
52
- (0, devkit_2.updateProjectConfiguration)(tree, appName, project);
53
- const installTask = (0, devkit_2.addDependenciesToPackageJson)(tree, {
51
+ (0, devkit_1.updateProjectConfiguration)(tree, appName, project);
52
+ const installTask = (0, devkit_1.addDependenciesToPackageJson)(tree, {
54
53
  '@module-federation/node': versions_1.moduleFederationNodeVersion,
55
54
  cors: versions_1.corsVersion,
56
55
  isbot: versions_1.isbotVersion,
@@ -58,5 +57,5 @@ async function setupSsrForRemote(tree, options, appName) {
58
57
  '@types/express': versions_1.typesExpressVersion,
59
58
  }, {}, undefined, true);
60
59
  tasks.push(installTask);
61
- return (0, devkit_2.runTasksInSerial)(...tasks);
60
+ return (0, devkit_1.runTasksInSerial)(...tasks);
62
61
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/react",
3
- "version": "23.2.0-beta.7",
3
+ "version": "23.2.0-beta.9",
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": {
@@ -96,7 +96,7 @@
96
96
  "react-dom": ">=18.0.0 <20.0.0",
97
97
  "express": "^4.21.2",
98
98
  "http-proxy-middleware": "^3.0.7",
99
- "@nx/module-federation": "23.2.0-beta.7"
99
+ "@nx/module-federation": "23.2.0-beta.9"
100
100
  },
101
101
  "peerDependenciesMeta": {
102
102
  "babel-plugin-react-compiler": {
@@ -118,27 +118,27 @@
118
118
  "minimatch": "10.2.5",
119
119
  "tslib": "^2.3.0",
120
120
  "semver": "^7.6.3",
121
- "@nx/devkit": "23.2.0-beta.7",
122
- "@nx/js": "23.2.0-beta.7",
123
- "@nx/eslint": "23.2.0-beta.7",
124
- "@nx/web": "23.2.0-beta.7"
121
+ "@nx/devkit": "23.2.0-beta.9",
122
+ "@nx/js": "23.2.0-beta.9",
123
+ "@nx/eslint": "23.2.0-beta.9",
124
+ "@nx/web": "23.2.0-beta.9"
125
125
  },
126
126
  "devDependencies": {
127
127
  "express": "^4.21.2",
128
128
  "http-proxy-middleware": "^3.0.7",
129
- "@nx/cypress": "23.2.0-beta.7",
130
- "@nx/module-federation": "23.2.0-beta.7",
131
- "@nx/playwright": "23.2.0-beta.7",
132
- "@nx/rollup": "23.2.0-beta.7",
133
- "@nx/rsbuild": "23.2.0-beta.7",
134
- "@nx/vite": "23.2.0-beta.7",
135
- "@nx/vitest": "23.2.0-beta.7",
136
- "@nx/webpack": "23.2.0-beta.7",
137
- "@nx/storybook": "23.2.0-beta.7",
138
- "nx": "23.2.0-beta.7"
129
+ "@nx/cypress": "23.2.0-beta.9",
130
+ "@nx/module-federation": "23.2.0-beta.9",
131
+ "@nx/playwright": "23.2.0-beta.9",
132
+ "@nx/rollup": "23.2.0-beta.9",
133
+ "@nx/rsbuild": "23.2.0-beta.9",
134
+ "@nx/vite": "23.2.0-beta.9",
135
+ "@nx/vitest": "23.2.0-beta.9",
136
+ "@nx/webpack": "23.2.0-beta.9",
137
+ "@nx/storybook": "23.2.0-beta.9",
138
+ "nx": "23.2.0-beta.9"
139
139
  },
140
140
  "optionalDependencies": {
141
- "@nx/vite": "23.2.0-beta.7"
141
+ "@nx/vite": "23.2.0-beta.9"
142
142
  },
143
143
  "publishConfig": {
144
144
  "access": "public"