@@ -5,9 +5,15 @@ import {
5
5
createBuilder ,
6
6
} from '@angular-devkit/architect' ;
7
7
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' ;
9
9
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' ;
11
17
12
18
import * as path from 'path' ;
13
19
import { setLogLevel , logger } from '@softarc/native-federation/build' ;
@@ -45,17 +51,34 @@ export async function* runBuilder(
45
51
nfOptions : NfBuilderSchema ,
46
52
context : BuilderContext
47
53
) : 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 (
50
57
target
51
58
) ) as unknown as JsonObject & Schema ;
52
59
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 (
55
62
_options ,
56
63
builder
57
64
) ) as JsonObject & Schema ;
58
65
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
+
59
82
const runServer = ! ! nfOptions . port ;
60
83
const write = ! runServer ;
61
84
const watch = ! ! runServer || nfOptions . watch ;
@@ -67,10 +90,12 @@ export async function* runBuilder(
67
90
setBuildAdapter ( adapter ) ;
68
91
69
92
setLogLevel ( options . verbose ? 'verbose' : 'info' ) ;
93
+
94
+ const outputPath = path . join ( options . outputPath , 'browser' ) ;
70
95
71
96
const fedOptions : FederationOptions = {
72
97
workspaceRoot : context . workspaceRoot ,
73
- outputPath : options . outputPath ,
98
+ outputPath : outputPath ,
74
99
federationConfig : infereConfigPath ( options . tsConfig ) ,
75
100
tsConfig : options . tsConfig ,
76
101
verbose : options . verbose ,
@@ -112,12 +137,12 @@ export async function* runBuilder(
112
137
let first = true ;
113
138
let lastResult : { success : boolean } | undefined ;
114
139
115
- if ( existsSync ( options . outputPath ) ) {
116
- rmSync ( options . outputPath , { recursive : true } ) ;
140
+ if ( existsSync ( outputPath ) ) {
141
+ rmSync ( outputPath , { recursive : true } ) ;
117
142
}
118
143
119
- if ( ! existsSync ( options . outputPath ) ) {
120
- mkdirSync ( options . outputPath , { recursive : true } ) ;
144
+ if ( ! existsSync ( outputPath ) ) {
145
+ mkdirSync ( outputPath , { recursive : true } ) ;
121
146
}
122
147
123
148
if ( ! write ) {
@@ -133,15 +158,24 @@ export async function* runBuilder(
133
158
134
159
options . deleteOutputPath = false ;
135
160
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
+
136
177
// 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 ) {
145
179
lastResult = output ;
146
180
147
181
if ( ! output . success ) {
0 commit comments