Skip to content

Commit d21e1c6

Browse files
committed
feat(nf): delegate to app builder or to dev-server delegating to app builder
1 parent 5393085 commit d21e1c6

File tree

2 files changed

+56
-21
lines changed

2 files changed

+56
-21
lines changed

libs/native-federation/src/builders/build/builder.ts

Lines changed: 53 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,15 @@ import {
55
createBuilder,
66
} from '@angular-devkit/architect';
77

8-
import { Schema } from '@angular-devkit/build-angular/src/builders/browser-esbuild/schema';
8+
import { Schema } from '@angular-devkit/build-angular/src/builders/application/schema';
99

10-
import { buildEsbuildBrowser } from '@angular-devkit/build-angular/src/builders/browser-esbuild';
10+
// import { buildEsbuildBrowser } from '@angular-devkit/build-angular/src/builders/browser-esbuild';
11+
import { buildApplication } from '@angular-devkit/build-angular/src/builders/application';
12+
// import { execute as executeDevServer } from '@angular-devkit/build-angular/src/builders/dev-server/builder';
13+
14+
import { serveWithVite } from '@angular-devkit/build-angular/src/builders/dev-server/vite-server';
15+
import { DevServerBuilderOptions } from '@angular-devkit/build-angular/src/builders/dev-server';
16+
import { normalizeOptions } from '@angular-devkit/build-angular/src/builders/dev-server/options';
1117

1218
import * as path from 'path';
1319
import { setLogLevel, logger } from '@softarc/native-federation/build';
@@ -45,17 +51,34 @@ export async function* runBuilder(
4551
nfOptions: NfBuilderSchema,
4652
context: BuilderContext
4753
): AsyncIterable<BuilderOutput> {
48-
const target = targetFromTargetString(nfOptions.target);
49-
const _options = (await context.getTargetOptions(
54+
55+
let target = targetFromTargetString(nfOptions.target);
56+
let _options = (await context.getTargetOptions(
5057
target
5158
)) as unknown as JsonObject & Schema;
5259

53-
const builder = await context.getBuilderNameForTarget(target);
54-
const options = (await context.validateOptions(
60+
let builder = await context.getBuilderNameForTarget(target);
61+
let options = (await context.validateOptions(
5562
_options,
5663
builder
5764
)) as JsonObject & Schema;
5865

66+
const outerOptions = options as DevServerBuilderOptions;
67+
const normOuterOptions = nfOptions.dev ? await normalizeOptions(context, context.target.project, outerOptions) : null;
68+
69+
if (nfOptions.dev) {
70+
target = targetFromTargetString(outerOptions.buildTarget);
71+
_options = (await context.getTargetOptions(
72+
target
73+
)) as unknown as JsonObject & Schema;
74+
75+
builder = await context.getBuilderNameForTarget(target);
76+
options = (await context.validateOptions(
77+
_options,
78+
builder
79+
)) as JsonObject & Schema;
80+
}
81+
5982
const runServer = !!nfOptions.port;
6083
const write = !runServer;
6184
const watch = !!runServer || nfOptions.watch;
@@ -67,10 +90,12 @@ export async function* runBuilder(
6790
setBuildAdapter(adapter);
6891

6992
setLogLevel(options.verbose ? 'verbose' : 'info');
93+
94+
const outputPath = path.join(options.outputPath, 'browser');
7095

7196
const fedOptions: FederationOptions = {
7297
workspaceRoot: context.workspaceRoot,
73-
outputPath: options.outputPath,
98+
outputPath: outputPath,
7499
federationConfig: infereConfigPath(options.tsConfig),
75100
tsConfig: options.tsConfig,
76101
verbose: options.verbose,
@@ -112,12 +137,12 @@ export async function* runBuilder(
112137
let first = true;
113138
let lastResult: { success: boolean } | undefined;
114139

115-
if (existsSync(options.outputPath)) {
116-
rmSync(options.outputPath, { recursive: true });
140+
if (existsSync(outputPath)) {
141+
rmSync(outputPath, { recursive: true });
117142
}
118143

119-
if (!existsSync(options.outputPath)) {
120-
mkdirSync(options.outputPath, { recursive: true });
144+
if (!existsSync(outputPath)) {
145+
mkdirSync(outputPath, { recursive: true });
121146
}
122147

123148
if (!write) {
@@ -133,15 +158,24 @@ export async function* runBuilder(
133158

134159
options.deleteOutputPath = false;
135160

161+
// const x = buildEsbuildBrowser(
162+
// options,
163+
// context as any,
164+
// {
165+
// write,
166+
// },
167+
// plugins
168+
// );
169+
170+
const appBuilderName = '@angular-devkit/build-angular:application';
171+
172+
const builderRun = nfOptions.dev ?
173+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
174+
serveWithVite(normOuterOptions, appBuilderName, context, undefined, { buildPlugins: plugins }) :
175+
buildApplication(options, context, plugins);
176+
136177
// builderRun.output.subscribe(async (output) => {
137-
for await (const output of buildEsbuildBrowser(
138-
options,
139-
context as any,
140-
{
141-
write,
142-
},
143-
plugins
144-
)) {
178+
for await (const output of builderRun) {
145179
lastResult = output;
146180

147181
if (!output.success) {

libs/native-federation/src/utils/angular-esbuild-adapter.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import {
2727
import { createRequire } from 'node:module';
2828

2929
import { Schema as EsBuildBuilderOptions } from '@angular-devkit/build-angular/src/builders/browser-esbuild/schema';
30+
import { ApplicationBuilderOptions as AppBuilderSchema } from '@angular-devkit/build-angular/src/builders/application';
3031

3132
import { createSharedMappingsPlugin } from './shared-mappings-plugin';
3233
import * as fs from 'fs';
@@ -54,7 +55,7 @@ export function setMemResultHandler(handler: MemResultHandler): void {
5455
}
5556

5657
export function createAngularBuildAdapter(
57-
builderOptions: EsBuildBuilderOptions,
58+
builderOptions: AppBuilderSchema,
5859
context: BuilderContext,
5960
rebuildRequested: RebuildEvents = new RebuildHubs()
6061
): BuildAdapter {
@@ -166,7 +167,7 @@ export function createAngularBuildAdapter(
166167
}
167168

168169
async function runEsbuild(
169-
builderOptions: EsBuildBuilderOptions,
170+
builderOptions: AppBuilderSchema,
170171
context: BuilderContext,
171172
entryPoints: EntryPoint[],
172173
external: string[],

0 commit comments

Comments
 (0)