@@ -16,6 +16,8 @@ import { getEmittedFiles } from '../utils';
1616import { BuildResult , WebpackFactory , WebpackLoggingCallback } from '../webpack' ;
1717import { Schema as WebpackDevServerBuilderSchema } from './schema' ;
1818
19+ export type WebpackDevServerFactory = typeof WebpackDevServer ;
20+
1921export type DevServerBuildOutput = BuildResult & {
2022 port : number ;
2123 family : string ;
@@ -29,6 +31,7 @@ export function runWebpackDevServer(
2931 devServerConfig ?: WebpackDevServer . Configuration ,
3032 logging ?: WebpackLoggingCallback ,
3133 webpackFactory ?: WebpackFactory ,
34+ webpackDevServerFactory ?: WebpackDevServerFactory ,
3235 } = { } ,
3336) : Observable < DevServerBuildOutput > {
3437 const createWebpack = ( c : webpack . Configuration ) => {
@@ -43,6 +46,18 @@ export function runWebpackDevServer(
4346 return of ( webpack ( c ) ) ;
4447 }
4548 } ;
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+
4661 const log : WebpackLoggingCallback = options . logging
4762 || ( ( stats , config ) => context . logger . info ( stats . toString ( config . stats ) ) ) ;
4863
@@ -55,7 +70,7 @@ export function runWebpackDevServer(
5570
5671 return createWebpack ( config ) . pipe (
5772 switchMap ( webpackCompiler => new Observable < DevServerBuildOutput > ( obs => {
58- const server = new WebpackDevServer ( webpackCompiler , devServerConfig ) ;
73+ const server = createWebpackDevServer ( webpackCompiler , devServerConfig ) ;
5974 let result : DevServerBuildOutput ;
6075
6176 webpackCompiler . hooks . done . tap ( 'build-webpack' , ( stats ) => {
0 commit comments