@@ -16,6 +16,8 @@ import { getEmittedFiles } from '../utils';
16
16
import { BuildResult , WebpackFactory , WebpackLoggingCallback } from '../webpack' ;
17
17
import { Schema as WebpackDevServerBuilderSchema } from './schema' ;
18
18
19
+ export type WebpackDevServerFactory = typeof WebpackDevServer ;
20
+
19
21
export type DevServerBuildOutput = BuildResult & {
20
22
port : number ;
21
23
family : string ;
@@ -29,6 +31,7 @@ export function runWebpackDevServer(
29
31
devServerConfig ?: WebpackDevServer . Configuration ,
30
32
logging ?: WebpackLoggingCallback ,
31
33
webpackFactory ?: WebpackFactory ,
34
+ webpackDevServerFactory ?: WebpackDevServerFactory ,
32
35
} = { } ,
33
36
) : Observable < DevServerBuildOutput > {
34
37
const createWebpack = ( c : webpack . Configuration ) => {
@@ -43,6 +46,18 @@ export function runWebpackDevServer(
43
46
return of ( webpack ( c ) ) ;
44
47
}
45
48
} ;
49
+
50
+ const createWebpackDevServer = (
51
+ webpack : webpack . Compiler | webpack . MultiCompiler ,
52
+ config : WebpackDevServer . Configuration ,
53
+ ) => {
54
+ if ( options . webpackDevServerFactory ) {
55
+ return new options . webpackDevServerFactory ( webpack , config ) ;
56
+ }
57
+
58
+ return new WebpackDevServer ( webpack , config ) ;
59
+ } ;
60
+
46
61
const log : WebpackLoggingCallback = options . logging
47
62
|| ( ( stats , config ) => context . logger . info ( stats . toString ( config . stats ) ) ) ;
48
63
@@ -55,7 +70,7 @@ export function runWebpackDevServer(
55
70
56
71
return createWebpack ( config ) . pipe (
57
72
switchMap ( webpackCompiler => new Observable < DevServerBuildOutput > ( obs => {
58
- const server = new WebpackDevServer ( webpackCompiler , devServerConfig ) ;
73
+ const server = createWebpackDevServer ( webpackCompiler , devServerConfig ) ;
59
74
let result : DevServerBuildOutput ;
60
75
61
76
webpackCompiler . hooks . done . tap ( 'build-webpack' , ( stats ) => {
0 commit comments