@nx/angular 19.7.0-canary.20240904-f39b995 → 19.7.0-canary.20240906-a3c2db8
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/migrations.json +13 -0
- package/package.json +9 -9
- package/src/builders/webpack-server/webpack-server.impl.js +1 -3
- package/src/executors/module-federation-ssr-dev-server/lib/start-static-remotes.d.ts +1 -6
- package/src/executors/module-federation-ssr-dev-server/lib/start-static-remotes.js +5 -1
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts +1 -1
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +12 -1
- package/src/generators/utils/add-mf-env-to-inputs.js +2 -1
- package/src/utils/mf/with-module-federation-ssr.js +8 -7
- package/src/utils/mf/with-module-federation.js +1 -0
- package/src/utils/versions.d.ts +2 -2
- package/src/utils/versions.js +2 -2
package/migrations.json
CHANGED
@@ -2122,6 +2122,19 @@
|
|
2122
2122
|
"alwaysAddToPackageJson": false
|
2123
2123
|
}
|
2124
2124
|
}
|
2125
|
+
},
|
2126
|
+
"19.7.0": {
|
2127
|
+
"version": "19.7.0-beta.0",
|
2128
|
+
"packages": {
|
2129
|
+
"@module-federation/enhanced": {
|
2130
|
+
"version": "~0.6.0",
|
2131
|
+
"alwaysAddToPackageJson": false
|
2132
|
+
},
|
2133
|
+
"@module-federation/node": {
|
2134
|
+
"version": "~2.5.0",
|
2135
|
+
"alwaysAddToPackageJson": false
|
2136
|
+
}
|
2137
|
+
}
|
2125
2138
|
}
|
2126
2139
|
}
|
2127
2140
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nx/angular",
|
3
|
-
"version": "19.7.0-canary.
|
3
|
+
"version": "19.7.0-canary.20240906-a3c2db8",
|
4
4
|
"private": false,
|
5
5
|
"description": "The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It provides: \n\n- Integration with libraries such as Storybook, Jest, ESLint, Tailwind CSS, Playwright and Cypress. \n\n- Generators to help scaffold code quickly (like: Micro Frontends, Libraries, both internal to your codebase and publishable to npm) \n\n- Single Component Application Modules (SCAMs) \n\n- NgRx helpers. \n\n- Utilities for automatic workspace refactoring.",
|
6
6
|
"repository": {
|
@@ -78,15 +78,15 @@
|
|
78
78
|
"tslib": "^2.3.0",
|
79
79
|
"webpack-merge": "^5.8.0",
|
80
80
|
"webpack": "^5.88.0",
|
81
|
-
"@module-federation/enhanced": "~0.
|
82
|
-
"@nx/devkit": "19.7.0-canary.
|
83
|
-
"@nx/js": "19.7.0-canary.
|
84
|
-
"@nx/eslint": "19.7.0-canary.
|
85
|
-
"@nx/webpack": "19.7.0-canary.
|
86
|
-
"@nx/web": "19.7.0-canary.
|
87
|
-
"@nx/workspace": "19.7.0-canary.
|
81
|
+
"@module-federation/enhanced": "~0.6.0",
|
82
|
+
"@nx/devkit": "19.7.0-canary.20240906-a3c2db8",
|
83
|
+
"@nx/js": "19.7.0-canary.20240906-a3c2db8",
|
84
|
+
"@nx/eslint": "19.7.0-canary.20240906-a3c2db8",
|
85
|
+
"@nx/webpack": "19.7.0-canary.20240906-a3c2db8",
|
86
|
+
"@nx/web": "19.7.0-canary.20240906-a3c2db8",
|
87
|
+
"@nx/workspace": "19.7.0-canary.20240906-a3c2db8",
|
88
88
|
"piscina": "^4.4.0",
|
89
|
-
"@nrwl/angular": "19.7.0-canary.
|
89
|
+
"@nrwl/angular": "19.7.0-canary.20240906-a3c2db8"
|
90
90
|
},
|
91
91
|
"peerDependencies": {
|
92
92
|
"@angular-devkit/build-angular": ">= 16.0.0 < 19.0.0",
|
@@ -33,9 +33,7 @@ function buildServerAppWithCustomWebpackConfiguration(options, context, pathToWe
|
|
33
33
|
// Therefore, if the build is an MF Server build, remove the auto-includes from
|
34
34
|
// the base webpack config from Angular
|
35
35
|
let mergedConfig = await (0, webpack_1.mergeCustomWebpackConfig)(baseWebpackConfig, pathToWebpackConfig, options, context.target);
|
36
|
-
if (mergedConfig.
|
37
|
-
.map((p) => p.constructor.name)
|
38
|
-
.includes('UniversalFederationPlugin')) {
|
36
|
+
if (mergedConfig.target === 'async-node') {
|
39
37
|
mergedConfig.entry.main = mergedConfig.entry.main.filter((m) => !m.startsWith('@angular/platform-server/init'));
|
40
38
|
mergedConfig.module.rules = mergedConfig.module.rules.filter((m) => !m.loader
|
41
39
|
? true
|
@@ -1,9 +1,4 @@
|
|
1
1
|
import { type ExecutorContext } from '@nx/devkit';
|
2
2
|
import { type Schema } from '../schema';
|
3
3
|
import type { StaticRemotesConfig } from '@nx/webpack/src/utils/module-federation/parse-static-remotes-config';
|
4
|
-
export declare function startStaticRemotes(ssrStaticRemotesConfig: StaticRemotesConfig, context: ExecutorContext, options: Schema):
|
5
|
-
success: boolean;
|
6
|
-
baseUrl: string;
|
7
|
-
}, {
|
8
|
-
success: boolean;
|
9
|
-
}, unknown>;
|
4
|
+
export declare function startStaticRemotes(ssrStaticRemotesConfig: StaticRemotesConfig, context: ExecutorContext, options: Schema): AsyncIterable<unknown>;
|
@@ -6,9 +6,13 @@ const devkit_1 = require("@nx/devkit");
|
|
6
6
|
const file_server_impl_1 = tslib_1.__importDefault(require("@nx/web/src/executors/file-server/file-server.impl"));
|
7
7
|
const path_1 = require("path");
|
8
8
|
const fs_1 = require("fs");
|
9
|
+
const async_iterable_1 = require("@nx/devkit/src/utils/async-iterable");
|
9
10
|
function startStaticRemotes(ssrStaticRemotesConfig, context, options) {
|
10
11
|
if (ssrStaticRemotesConfig.remotes.length === 0) {
|
11
|
-
return
|
12
|
+
return (0, async_iterable_1.createAsyncIterable)(({ next, done }) => {
|
13
|
+
next({ success: true });
|
14
|
+
done();
|
15
|
+
});
|
12
16
|
}
|
13
17
|
// The directories are usually generated with /browser and /server suffixes so we need to copy them to a common directory
|
14
18
|
const commonOutputDirectory = (0, path_1.join)(devkit_1.workspaceRoot, 'tmp/static-remotes');
|
package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
import { type ExecutorContext } from '@nx/devkit';
|
2
2
|
import type { Schema } from './schema';
|
3
|
-
export declare function moduleFederationSsrDevServerExecutor(schema: Schema, context: ExecutorContext): AsyncGenerator<
|
3
|
+
export declare function moduleFederationSsrDevServerExecutor(schema: Schema, context: ExecutorContext): AsyncGenerator<unknown, any, undefined>;
|
4
4
|
export default moduleFederationSsrDevServerExecutor;
|
package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js
CHANGED
@@ -74,7 +74,7 @@ async function* moduleFederationSsrDevServerExecutor(schema, context) {
|
|
74
74
|
...v,
|
75
75
|
baseUrl: undefined,
|
76
76
|
}));
|
77
|
-
|
77
|
+
const combined = (0, async_iterable_1.combineAsyncIterables)(removeBaseUrlEmission(staticRemotes), ...(devRemotes ? devRemotes.map(removeBaseUrlEmission) : []), (0, async_iterable_1.createAsyncIterable)(async ({ next, done }) => {
|
78
78
|
if (!options.isInitialHost) {
|
79
79
|
done();
|
80
80
|
return;
|
@@ -94,6 +94,7 @@ async function* moduleFederationSsrDevServerExecutor(schema, context) {
|
|
94
94
|
retryDelay: 2500,
|
95
95
|
host: 'localhost',
|
96
96
|
})));
|
97
|
+
next({ success: true, baseUrl: `http://localhost:${options.port}` });
|
97
98
|
}
|
98
99
|
catch (error) {
|
99
100
|
throw new Error(`Failed to start remotes. Check above for any errors.`, {
|
@@ -104,5 +105,15 @@ async function* moduleFederationSsrDevServerExecutor(schema, context) {
|
|
104
105
|
done();
|
105
106
|
}
|
106
107
|
}));
|
108
|
+
let refs = 2 + (devRemotes?.length ?? 0);
|
109
|
+
for await (const result of combined) {
|
110
|
+
if (result.success === false)
|
111
|
+
throw new Error('Remotes failed to start');
|
112
|
+
if (result.success)
|
113
|
+
refs--;
|
114
|
+
if (refs === 0)
|
115
|
+
break;
|
116
|
+
}
|
117
|
+
return yield* currIter;
|
107
118
|
}
|
108
119
|
exports.default = moduleFederationSsrDevServerExecutor;
|
@@ -22,6 +22,7 @@ function addMfEnvToTargetDefaultInputs(tree) {
|
|
22
22
|
}
|
23
23
|
if (!mfEnvVarExists) {
|
24
24
|
nxJson.targetDefaults[webpackExecutor].inputs.push({ env: mfEnvVar });
|
25
|
-
(0, devkit_1.updateNxJson)(tree, nxJson);
|
26
25
|
}
|
26
|
+
nxJson.targetDefaults[webpackExecutor].cache = true;
|
27
|
+
(0, devkit_1.updateNxJson)(tree, nxJson);
|
27
28
|
}
|
@@ -12,7 +12,7 @@ async function withModuleFederationForSSR(options, configOverride) {
|
|
12
12
|
return (config) => {
|
13
13
|
const updatedConfig = {
|
14
14
|
...(config ?? {}),
|
15
|
-
target:
|
15
|
+
target: 'async-node',
|
16
16
|
output: {
|
17
17
|
...(config.output ?? {}),
|
18
18
|
uniqueName: options.name,
|
@@ -30,7 +30,7 @@ async function withModuleFederationForSSR(options, configOverride) {
|
|
30
30
|
},
|
31
31
|
plugins: [
|
32
32
|
...(config.plugins ?? []),
|
33
|
-
new (require('@module-federation/
|
33
|
+
new (require('@module-federation/enhanced').ModuleFederationPlugin)({
|
34
34
|
name: options.name,
|
35
35
|
filename: 'remoteEntry.js',
|
36
36
|
exposes: options.exposes,
|
@@ -38,10 +38,6 @@ async function withModuleFederationForSSR(options, configOverride) {
|
|
38
38
|
shared: {
|
39
39
|
...sharedDependencies,
|
40
40
|
},
|
41
|
-
library: {
|
42
|
-
type: 'commonjs-module',
|
43
|
-
},
|
44
|
-
isServer: true,
|
45
41
|
/**
|
46
42
|
* Apply user-defined config override
|
47
43
|
*/
|
@@ -50,9 +46,14 @@ async function withModuleFederationForSSR(options, configOverride) {
|
|
50
46
|
!options.disableNxRuntimeLibraryControlPlugin
|
51
47
|
? [
|
52
48
|
...(configOverride?.runtimePlugins ?? []),
|
49
|
+
require.resolve('@module-federation/node/runtimePlugin'),
|
53
50
|
require.resolve('@nx/webpack/src/utils/module-federation/plugins/runtime-library-control.plugin.js'),
|
54
51
|
]
|
55
|
-
:
|
52
|
+
: [
|
53
|
+
...(configOverride?.runtimePlugins ?? []),
|
54
|
+
require.resolve('@module-federation/node/runtimePlugin'),
|
55
|
+
],
|
56
|
+
virtualRuntimeEntry: true,
|
56
57
|
}, {}),
|
57
58
|
sharedLibraries.getReplacementPlugin(),
|
58
59
|
],
|
@@ -55,6 +55,7 @@ async function withModuleFederation(options, configOverride) {
|
|
55
55
|
require.resolve('@nx/webpack/src/utils/module-federation/plugins/runtime-library-control.plugin.js'),
|
56
56
|
]
|
57
57
|
: configOverride?.runtimePlugins,
|
58
|
+
virtualRuntimeEntry: true,
|
58
59
|
}),
|
59
60
|
sharedLibraries.getReplacementPlugin(),
|
60
61
|
],
|
package/src/utils/versions.d.ts
CHANGED
@@ -12,8 +12,8 @@ export declare const typesCorsVersion = "~2.8.5";
|
|
12
12
|
export declare const expressVersion = "~4.18.2";
|
13
13
|
export declare const typesExpressVersion = "4.17.14";
|
14
14
|
export declare const browserSyncVersion = "^3.0.0";
|
15
|
-
export declare const moduleFederationNodeVersion = "~2.
|
16
|
-
export declare const moduleFederationEnhancedVersion = "~0.
|
15
|
+
export declare const moduleFederationNodeVersion = "~2.5.0";
|
16
|
+
export declare const moduleFederationEnhancedVersion = "~0.6.0";
|
17
17
|
export declare const angularEslintVersion = "^18.0.1";
|
18
18
|
export declare const typescriptEslintVersion = "^7.16.0";
|
19
19
|
export declare const tailwindVersion = "^3.0.2";
|
package/src/utils/versions.js
CHANGED
@@ -15,8 +15,8 @@ exports.typesCorsVersion = '~2.8.5';
|
|
15
15
|
exports.expressVersion = '~4.18.2';
|
16
16
|
exports.typesExpressVersion = '4.17.14';
|
17
17
|
exports.browserSyncVersion = '^3.0.0';
|
18
|
-
exports.moduleFederationNodeVersion = '~2.
|
19
|
-
exports.moduleFederationEnhancedVersion = '~0.
|
18
|
+
exports.moduleFederationNodeVersion = '~2.5.0';
|
19
|
+
exports.moduleFederationEnhancedVersion = '~0.6.0';
|
20
20
|
exports.angularEslintVersion = '^18.0.1';
|
21
21
|
exports.typescriptEslintVersion = '^7.16.0';
|
22
22
|
exports.tailwindVersion = '^3.0.2';
|