Skip to content

Commit deacee0

Browse files
clydinKeen Yee Liau
authored and
Keen Yee Liau
committed
fix(@angular-devkit/build-angular): account for dynamic port with dev-server baseUrl
The underlying webpack dev server builder is responsible for determining the actual port value for dynamic port cases (port = 0). This change uses that value to generate the full URL for accessing the dev server.
1 parent ed07b5e commit deacee0

File tree

1 file changed

+28
-28
lines changed
  • packages/angular_devkit/build_angular/src/dev-server

1 file changed

+28
-28
lines changed

packages/angular_devkit/build_angular/src/dev-server/index.ts

+28-28
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ export function serveWebpackBrowser(
8181
const browserTarget = targetFromTargetString(options.browserTarget);
8282
const root = context.workspaceRoot;
8383
let first = true;
84-
let openAddress: string;
8584
const host = new NodeJsSyncHost();
8685

8786
const loggingFn = transforms.logging
@@ -152,15 +151,6 @@ export function serveWebpackBrowser(
152151
options.publicHost = clientAddress.host;
153152
}
154153

155-
// Resolve serve address.
156-
const serverAddress = url.format({
157-
protocol: options.ssl ? 'https' : 'http',
158-
hostname: options.host === '0.0.0.0' ? 'localhost' : options.host,
159-
// Port cannot be undefined here since we have a step that sets it back in options above.
160-
// tslint:disable-next-line:no-non-null-assertion
161-
port: options.port !.toString(),
162-
});
163-
164154
// Add live reload config.
165155
if (options.liveReload) {
166156
_addLiveReload(options, browserOptions, webpackConfig, clientAddress, context.logger);
@@ -193,24 +183,34 @@ export function serveWebpackBrowser(
193183
`);
194184
}
195185

196-
context.logger.info(tags.oneLine`
197-
**
198-
Angular Live Development Server is listening on ${options.host}:${options.port},
199-
open your browser on ${serverAddress}${webpackDevServerConfig.publicPath}
200-
**
201-
`);
202-
203-
openAddress = serverAddress + webpackDevServerConfig.publicPath;
204-
205-
return runWebpackDevServer(webpackConfig, context, { logging: loggingFn });
206-
}),
207-
map(buildEvent => {
208-
if (first && options.open) {
209-
first = false;
210-
open(openAddress);
211-
}
212-
213-
return { ...buildEvent, baseUrl: openAddress } as DevServerBuilderOutput;
186+
return runWebpackDevServer(webpackConfig, context, { logging: loggingFn }).pipe(
187+
map(buildEvent => {
188+
// Resolve serve address.
189+
const serverAddress = url.format({
190+
protocol: options.ssl ? 'https' : 'http',
191+
hostname: options.host === '0.0.0.0' ? 'localhost' : options.host,
192+
pathname: webpackDevServerConfig.publicPath,
193+
port: buildEvent.port,
194+
});
195+
196+
if (first) {
197+
first = false;
198+
199+
context.logger.info(tags.oneLine`
200+
**
201+
Angular Live Development Server is listening on ${options.host}:${options.port},
202+
open your browser on ${serverAddress}
203+
**
204+
`);
205+
206+
if (options.open) {
207+
open(serverAddress);
208+
}
209+
}
210+
211+
return { ...buildEvent, baseUrl: serverAddress } as DevServerBuilderOutput;
212+
}),
213+
);
214214
}),
215215
);
216216
}

0 commit comments

Comments
 (0)