diff --git a/packages/angular/src/utils/mfe/with-module-federation.ts b/packages/angular/src/utils/mfe/with-module-federation.ts index c8ec68e568c38..b9e446c031d57 100644 --- a/packages/angular/src/utils/mfe/with-module-federation.ts +++ b/packages/angular/src/utils/mfe/with-module-federation.ts @@ -18,6 +18,7 @@ import { import { ParsedCommandLine } from 'typescript'; import { readWorkspaceJson } from 'nx/src/project-graph/file-utils'; import { readRootPackageJson } from './utils'; +import { extname, join } from 'path'; import ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin'); export type MFERemotes = string[] | [remoteName: string, remoteUrl: string][]; @@ -142,12 +143,11 @@ function mapRemotes(remotes: MFERemotes) { for (const remote of remotes) { if (Array.isArray(remote)) { - const remoteLocation = remote[1].match(/remoteEntry\.(js|mjs)/) - ? remote[1] - : `${ - remote[1].endsWith('/') ? remote[1].slice(0, -1) : remote[1] - }/remoteEntry.mjs`; - mappedRemotes[remote[0]] = remoteLocation; + const [remoteName, remoteLocation] = remote; + const remoteLocationExt = extname(remoteLocation); + mappedRemotes[remoteName] = ['.js', '.mjs'].includes(remoteLocationExt) + ? remoteLocation + : join(remoteLocation, 'remoteEntry.mjs'); } else if (typeof remote === 'string') { mappedRemotes[remote] = determineRemoteUrl(remote); } diff --git a/packages/react/src/executors/module-federation-dev-server/module-federation-dev-server.impl.ts b/packages/react/src/executors/module-federation-dev-server/module-federation-dev-server.impl.ts index 663c5ddbdd7ac..68766a62d671e 100644 --- a/packages/react/src/executors/module-federation-dev-server/module-federation-dev-server.impl.ts +++ b/packages/react/src/executors/module-federation-dev-server/module-federation-dev-server.impl.ts @@ -44,12 +44,13 @@ export default async function* moduleFederationDevServer( : [options.devRemotes]; for (const app of knownRemotes) { - const isDev = devServeApps.includes(app); + const [appName] = Array.isArray(app) ? app : [app]; + const isDev = devServeApps.includes(appName); iter = combineAsyncIterators( iter, await runExecutor( { - project: app, + project: appName, target: isDev ? 'serve' : 'serve-static', configuration: context.configurationName, }, diff --git a/packages/react/src/module-federation/with-module-federation.ts b/packages/react/src/module-federation/with-module-federation.ts index 376ab51e0ba80..618439a9221f0 100644 --- a/packages/react/src/module-federation/with-module-federation.ts +++ b/packages/react/src/module-federation/with-module-federation.ts @@ -23,8 +23,9 @@ import { SharedFunction, SharedLibraryConfig, } from './models'; -import ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin'); import { readRootPackageJson } from './package-json'; +import { extname, join } from 'path'; +import ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin'); function collectDependencies( projectGraph: ProjectGraph, @@ -131,14 +132,10 @@ function mapRemotes(remotes: Remotes) { for (const remote of remotes) { if (Array.isArray(remote)) { let [remoteName, remoteLocation] = remote; - if (!remoteLocation.match(/remoteEntry\.(js|mjs)$/)) { - remoteLocation = `${ - remoteLocation.endsWith('/') - ? remoteLocation.slice(0, -1) - : remoteLocation - }/remoteEntry.js`; - } - mappedRemotes[remoteName] = remoteLocation; + const remoteLocationExt = extname(remoteLocation); + mappedRemotes[remoteName] = ['.js', '.mjs'].includes(remoteLocationExt) + ? remoteLocation + : join(remoteLocation, 'remoteEntry.js'); } else if (typeof remote === 'string') { mappedRemotes[remote] = determineRemoteUrl(remote); }