diff --git a/libs/native-federation/src/builders/build/builder.ts b/libs/native-federation/src/builders/build/builder.ts index 23ee9496..2b2f5c22 100644 --- a/libs/native-federation/src/builders/build/builder.ts +++ b/libs/native-federation/src/builders/build/builder.ts @@ -47,6 +47,7 @@ import { createSharedMappingsPlugin } from '../../utils/shared-mappings-plugin'; import { updateScriptTags } from '../../utils/updateIndexHtml'; import { federationBuildNotifier } from './federation-build-notifier'; import { NfBuilderSchema } from './schema'; +import { Schema as DevServerSchema } from '@angular-devkit/build-angular/src/builders/dev-server/schema'; const originalWrite = process.stderr.write.bind(process.stderr); @@ -89,7 +90,7 @@ export async function* runBuilder( ): AsyncIterable { let target = targetFromTargetString(nfOptions.target); - let _options = (await context.getTargetOptions( + let targetOptions = (await context.getTargetOptions( target )) as unknown as JsonObject & ApplicationBuilderOptions; @@ -117,28 +118,40 @@ export async function* runBuilder( } let options = (await context.validateOptions( - _options, + targetOptions, builder )) as JsonObject & ApplicationBuilderOptions; - const outerOptions = options as any; - const normOuterOptions = nfOptions.dev - ? await normalizeOptions(context, context.target.project, outerOptions) - : null; + /** + * Explicitly defined as devServer or if the target contains "serve" + */ + const runServer = + typeof nfOptions.devServer !== 'undefined' + ? !!nfOptions.devServer + : target.target.includes('serve'); + + let serverOptions = null; - const runServer = nfOptions.dev && nfOptions.devServer !== false; const write = true; const watch = nfOptions.watch; - if (runServer) { - target = targetFromTargetString(outerOptions.buildTarget); - _options = (await context.getTargetOptions( + if (!!options['buildTarget']) { + serverOptions = await normalizeOptions( + context, + context.target.project, + options as unknown as DevServerSchema + ); + + target = targetFromTargetString(options['buildTarget'] as string); + targetOptions = (await context.getTargetOptions( target )) as unknown as JsonObject & ApplicationBuilderOptions; builder = await context.getBuilderNameForTarget(target); - options = (await context.validateOptions(_options, builder)) as JsonObject & - ApplicationBuilderOptions; + options = (await context.validateOptions( + targetOptions, + builder + )) as JsonObject & ApplicationBuilderOptions; } options.watch = watch; @@ -329,7 +342,7 @@ export async function* runBuilder( const builderRun = runServer ? serveWithVite( - normOuterOptions, + serverOptions, appBuilderName, _buildApplication, context,