@@ -22,7 +22,7 @@ import * as url from 'url';
22
22
import * as webpack from 'webpack' ;
23
23
import * as webpackDevServer from 'webpack-dev-server' ;
24
24
import { getAnalyticsConfig , getCompilerConfig } from '../browser' ;
25
- import { Schema as BrowserBuilderSchema } from '../browser/schema' ;
25
+ import { OutputHashing , Schema as BrowserBuilderSchema } from '../browser/schema' ;
26
26
import { ExecutionTransformer } from '../transforms' ;
27
27
import { BuildBrowserFeatures , normalizeOptimization } from '../utils' ;
28
28
import { findCachePath } from '../utils/cache-path' ;
@@ -94,7 +94,7 @@ export function serveWebpackBrowser(
94
94
locale : string | undefined ;
95
95
} > {
96
96
// Get the browser configuration from the target name.
97
- const rawBrowserOptions = await context . getTargetOptions ( browserTarget ) ;
97
+ const rawBrowserOptions = ( await context . getTargetOptions ( browserTarget ) ) as json . JsonObject & BrowserBuilderSchema ;
98
98
options . port = await checkPort ( options . port ?? 4200 , options . host || 'localhost' ) ;
99
99
100
100
// Override options we need to override, if defined.
@@ -122,11 +122,18 @@ export function serveWebpackBrowser(
122
122
// In dev server we should not have budgets because of extra libs such as socks-js
123
123
overrides . budgets = undefined ;
124
124
125
+ if ( rawBrowserOptions . outputHashing && rawBrowserOptions . outputHashing !== OutputHashing . None ) {
126
+ // Disable output hashing for dev build as this can cause memory leaks
127
+ // See: https://github.com/webpack/webpack-dev-server/issues/377#issuecomment-241258405
128
+ overrides . outputHashing = OutputHashing . None ;
129
+ logger . warn ( `Warning: 'outputHashing' option is disabled when using the dev-server.` ) ;
130
+ }
131
+
125
132
const browserName = await context . getBuilderNameForTarget ( browserTarget ) ;
126
- const browserOptions = await context . validateOptions < json . JsonObject & BrowserBuilderSchema > (
133
+ const browserOptions = await context . validateOptions (
127
134
{ ...rawBrowserOptions , ...overrides } ,
128
135
browserName ,
129
- ) ;
136
+ ) as json . JsonObject & BrowserBuilderSchema ;
130
137
131
138
const { config, projectRoot, i18n } = await generateI18nBrowserWebpackConfigFromContext (
132
139
browserOptions ,
0 commit comments