@nx/react 16.3.0-beta.5 → 16.3.0-beta.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/react",
3
- "version": "16.3.0-beta.5",
3
+ "version": "16.3.0-beta.6",
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, 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": {
@@ -31,11 +31,11 @@
31
31
  "migrations": "./migrations.json"
32
32
  },
33
33
  "dependencies": {
34
- "@nrwl/react": "16.3.0-beta.5",
35
- "@nx/devkit": "16.3.0-beta.5",
36
- "@nx/js": "16.3.0-beta.5",
37
- "@nx/linter": "16.3.0-beta.5",
38
- "@nx/web": "16.3.0-beta.5",
34
+ "@nrwl/react": "16.3.0-beta.6",
35
+ "@nx/devkit": "16.3.0-beta.6",
36
+ "@nx/js": "16.3.0-beta.6",
37
+ "@nx/linter": "16.3.0-beta.6",
38
+ "@nx/web": "16.3.0-beta.6",
39
39
  "@phenomnomnominal/tsquery": "~5.0.1",
40
40
  "@svgr/webpack": "^6.1.2",
41
41
  "chalk": "^4.1.0",
@@ -46,5 +46,5 @@
46
46
  "access": "public"
47
47
  },
48
48
  "types": "./index.d.ts",
49
- "gitHead": "11bb99316d977adfc3e0599076a73461ec8c48a1"
49
+ "gitHead": "c8d245189be8176447ad6d4ac57ff6dd4d9d9c1c"
50
50
  }
@@ -4,8 +4,8 @@ type ModuleFederationDevServerOptions = WebDevServerOptions & {
4
4
  devRemotes?: string | string[];
5
5
  skipRemotes?: string[];
6
6
  };
7
- export default function moduleFederationDevServer(options: ModuleFederationDevServerOptions, context: ExecutorContext): AsyncGenerator<{
8
- baseUrl: string;
7
+ export default function moduleFederationDevServer(options: ModuleFederationDevServerOptions, context: ExecutorContext): AsyncIterableIterator<{
9
8
  success: boolean;
10
- }, any, undefined>;
9
+ baseUrl?: string;
10
+ }>;
11
11
  export {};
@@ -4,12 +4,14 @@ const tslib_1 = require("tslib");
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const dev_server_impl_1 = require("@nx/webpack/src/executors/dev-server/dev-server.impl");
6
6
  const path_1 = require("path");
7
- const chalk = require("chalk");
8
7
  const async_iterable_1 = require("@nx/devkit/src/utils/async-iterable");
8
+ const chalk = require("chalk");
9
+ const wait_for_port_open_1 = require("@nx/web/src/utils/wait-for-port-open");
10
+ const child_process_1 = require("child_process");
9
11
  function moduleFederationDevServer(options, context) {
10
12
  var _a, _b;
11
13
  return tslib_1.__asyncGenerator(this, arguments, function* moduleFederationDevServer_1() {
12
- let iter = (0, dev_server_impl_1.default)(options, context);
14
+ const currIter = (0, dev_server_impl_1.default)(options, context);
13
15
  const p = context.projectsConfigurations.projects[context.projectName];
14
16
  const moduleFederationConfigPath = (0, path_1.join)(context.root, p.root, 'module-federation.config.js');
15
17
  let moduleFederationConfig;
@@ -17,38 +19,86 @@ function moduleFederationDevServer(options, context) {
17
19
  moduleFederationConfig = require(moduleFederationConfigPath);
18
20
  }
19
21
  catch (_c) {
20
- // TODO(jack): Add a link to guide
21
- throw new Error(`Could not load ${moduleFederationConfigPath}. Was this project generated with "@nx/react:host"?`);
22
+ throw new Error(`Could not load ${moduleFederationConfigPath}. Was this project generated with "@nx/react:host"?\nSee: https://nx.dev/recipes/module-federation/faster-builds`);
22
23
  }
23
24
  const remotesToSkip = new Set((_a = options.skipRemotes) !== null && _a !== void 0 ? _a : []);
24
25
  const knownRemotes = ((_b = moduleFederationConfig.remotes) !== null && _b !== void 0 ? _b : []).filter((r) => {
25
26
  const validRemote = Array.isArray(r) ? r[0] : r;
26
27
  return !remotesToSkip.has(validRemote);
27
28
  });
29
+ const remotePorts = knownRemotes.map((r) => context.projectGraph.nodes[r].data.targets['serve'].options.port);
28
30
  const devServeApps = !options.devRemotes
29
31
  ? []
30
32
  : Array.isArray(options.devRemotes)
31
33
  ? options.devRemotes
32
34
  : [options.devRemotes];
35
+ devkit_1.logger.info(`NX Starting module federation dev-server for ${chalk.bold(context.projectName)} with ${knownRemotes.length} remotes`);
36
+ const nxBin = require.resolve('nx');
37
+ const devRemoteIters = [];
38
+ let isCollectingStaticRemoteOutput = true;
33
39
  for (const app of knownRemotes) {
34
- const [appName] = Array.isArray(app) ? app : [app];
35
- const isDev = devServeApps.includes(appName);
36
- iter = (0, async_iterable_1.combineAsyncIterables)(iter, yield tslib_1.__await((0, devkit_1.runExecutor)({
37
- project: appName,
38
- target: isDev ? 'serve' : 'serve-static',
39
- configuration: context.configurationName,
40
- }, {
41
- watch: isDev,
42
- }, context)));
40
+ const appName = Array.isArray(app) ? app[0] : app;
41
+ if (devServeApps.includes(appName)) {
42
+ devRemoteIters.push(yield tslib_1.__await((0, devkit_1.runExecutor)({
43
+ project: appName,
44
+ target: 'serve',
45
+ configuration: context.configurationName,
46
+ }, {
47
+ watch: true,
48
+ }, context)));
49
+ }
50
+ else {
51
+ let outWithErr = [];
52
+ const staticProcess = (0, child_process_1.spawn)(`node ${nxBin} run ${appName}:serve-static${context.configurationName ? `:${context.configurationName}` : ''}`, {
53
+ cwd: context.root,
54
+ stdio: ['ignore', 'pipe', 'pipe'],
55
+ shell: true,
56
+ windowsHide: true,
57
+ });
58
+ staticProcess.stdout.on('data', (data) => {
59
+ if (isCollectingStaticRemoteOutput) {
60
+ outWithErr.push(data.toString());
61
+ }
62
+ else {
63
+ outWithErr = null;
64
+ staticProcess.stdout.removeAllListeners('data');
65
+ }
66
+ });
67
+ staticProcess.stderr.on('data', (data) => devkit_1.logger.info(data.toString()));
68
+ staticProcess.on('exit', (code) => {
69
+ if (code !== 0) {
70
+ devkit_1.logger.info(outWithErr.join(''));
71
+ throw new Error(`Remote failed to start. See above for errors.`);
72
+ }
73
+ });
74
+ process.on('SIGTERM', () => staticProcess.kill('SIGTERM'));
75
+ process.on('exit', () => staticProcess.kill('SIGTERM'));
76
+ }
43
77
  }
44
- let numAwaiting = knownRemotes.length + 1; // remotes + host
45
- return yield tslib_1.__await(yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues((0, async_iterable_1.tapAsyncIterable)(iter, (x) => {
46
- var _a, _b;
47
- numAwaiting--;
48
- if (numAwaiting === 0) {
49
- devkit_1.logger.info(`[ ${chalk.green('ready')} ] http://${(_a = options.host) !== null && _a !== void 0 ? _a : 'localhost'}:${(_b = options.port) !== null && _b !== void 0 ? _b : 4200}`);
78
+ return yield tslib_1.__await(yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues((0, async_iterable_1.combineAsyncIterables)(currIter, ...devRemoteIters, (0, async_iterable_1.createAsyncIterable)(({ next, done }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
79
+ if (remotePorts.length === 0) {
80
+ done();
81
+ return;
82
+ }
83
+ try {
84
+ yield Promise.all(remotePorts.map((port) =>
85
+ // Allow 20 minutes for each remote to start, which is plenty of time but we can tweak it later if needed.
86
+ // Most remotes should start in under 1 minute.
87
+ (0, wait_for_port_open_1.waitForPortOpen)(port, {
88
+ retries: 480,
89
+ retryDelay: 2500,
90
+ })));
91
+ isCollectingStaticRemoteOutput = false;
92
+ devkit_1.logger.info(`NX All remotes started, server ready at http://localhost:${options.port}`);
93
+ next({ success: true, baseUrl: `http://localhost:${options.port}` });
94
+ }
95
+ catch (_d) {
96
+ throw new Error(`Timed out waiting for remote to start. Check above for any errors.`);
97
+ }
98
+ finally {
99
+ done();
50
100
  }
51
- })))));
101
+ })))))));
52
102
  });
53
103
  }
54
104
  exports.default = moduleFederationDevServer;
@@ -1 +1 @@
1
- {"version":3,"file":"module-federation-dev-server.impl.js","sourceRoot":"","sources":["../../../../../../packages/react/src/executors/module-federation-dev-server/module-federation-dev-server.impl.ts"],"names":[],"mappings":";;;AAAA,uCAAkE;AAClE,0FAAqF;AAErF,+BAA4B;AAC5B,+BAA+B;AAC/B,wEAG6C;AAO7C,SAA+B,yBAAyB,CACtD,OAAyC,EACzC,OAAwB;;;QAExB,IAAI,IAAI,GAAG,IAAA,yBAAiB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEvE,MAAM,0BAA0B,GAAG,IAAA,WAAI,EACrC,OAAO,CAAC,IAAI,EACZ,CAAC,CAAC,IAAI,EACN,6BAA6B,CAC9B,CAAC;QAEF,IAAI,sBAA2B,CAAC;QAChC,IAAI;YACF,sBAAsB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;SAC9D;QAAC,WAAM;YACN,kCAAkC;YAClC,MAAM,IAAI,KAAK,CACb,kBAAkB,0BAA0B,qDAAqD,CAClG,CAAC;SACH;QAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAA,OAAO,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,CAAC,MAAA,sBAAsB,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACvE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,UAAU;YACtC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBACnC,CAAC,CAAC,OAAO,CAAC,UAAU;gBACpB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEzB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;YAC9B,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,GAAG,IAAA,sCAAqB,EAC1B,IAAI,EACJ,sBAAM,IAAA,oBAAW,EACf;gBACE,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc;gBACxC,aAAa,EAAE,OAAO,CAAC,iBAAiB;aACzC,EACD;gBACE,KAAK,EAAE,KAAK;aACb,EACD,OAAO,CACR,CAAA,CACF,CAAC;SACH;QAED,IAAI,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,iBAAiB;QAC5D,6BAAO,sBAAA,KAAK,CAAC,CAAC,yBAAA,sBAAA,IAAA,iCAAgB,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;;YACzC,WAAW,EAAE,CAAC;YACd,IAAI,WAAW,KAAK,CAAC,EAAE;gBACrB,eAAM,CAAC,IAAI,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,MAAA,OAAO,CAAC,IAAI,mCAAI,WAAW,IAC/D,MAAA,OAAO,CAAC,IAAI,mCAAI,IAClB,EAAE,CACH,CAAC;aACH;QACH,CAAC,CAAC,CAAA,CAAA,CAAA,EAAC;;CACJ;AAjED,4CAiEC"}
1
+ {"version":3,"file":"module-federation-dev-server.impl.js","sourceRoot":"","sources":["../../../../../../packages/react/src/executors/module-federation-dev-server/module-federation-dev-server.impl.ts"],"names":[],"mappings":"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"}