Skip to content

Commit 9b2dfe0

Browse files
committed
feat(@angular/build): add process.env.PORT support to the dev server
Make possible to set the dev server port via `process.env.PORT`. Handles issue #32236.
1 parent 843ca01 commit 9b2dfe0

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

packages/angular/build/src/builders/dev-server/builder.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,16 @@ websocket connection issues.
9393
`);
9494
}
9595

96+
// Overwrite port, if process.env.PORT is available.
97+
if (process.env.PORT) {
98+
const envPort = Number(process.env.PORT);
99+
100+
if (!isNaN(envPort)) {
101+
normalizedOptions.port = envPort;
102+
context.logger.info('process.env.PORT detected. Port set to ' + envPort);
103+
}
104+
}
105+
96106
normalizedOptions.port = await checkPort(normalizedOptions.port, normalizedOptions.host);
97107

98108
return {

packages/angular/build/src/builders/dev-server/tests/options/port_spec.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT
4242
port: undefined,
4343
});
4444

45-
const { result, response, logs } = await executeOnceAndFetch(harness, '/');
45+
const { result, response } = await executeOnceAndFetch(harness, '/');
4646

4747
expect(result?.success).toBeTrue();
4848
expect(getResultPort(result)).toBe('4200');
@@ -55,7 +55,7 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT
5555
port: 0,
5656
});
5757

58-
const { result, response, logs } = await executeOnceAndFetch(harness, '/');
58+
const { result, response } = await executeOnceAndFetch(harness, '/');
5959

6060
expect(result?.success).toBeTrue();
6161
const port = getResultPort(result);
@@ -73,11 +73,30 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT
7373
port: 8000,
7474
});
7575

76-
const { result, response, logs } = await executeOnceAndFetch(harness, '/');
76+
const { result, response } = await executeOnceAndFetch(harness, '/');
7777

7878
expect(result?.success).toBeTrue();
7979
expect(getResultPort(result)).toBe('8000');
8080
expect(await response?.text()).toContain('<title>');
8181
});
82+
83+
it('should be overwritten by process.env.PORT if it exists', async () => {
84+
harness.useTarget('serve', {
85+
...BASE_OPTIONS,
86+
port: 8000,
87+
});
88+
89+
process.env.PORT = '4201';
90+
91+
const { result, response } = await executeOnceAndFetch(harness, '/');
92+
93+
expect(result?.success).toBeTrue();
94+
expect(getResultPort(result)).toBe('4201');
95+
expect(await response?.text()).toContain('<title>');
96+
97+
expect(1).toEqual(2);
98+
99+
delete process.env.PORT;
100+
});
82101
});
83102
});

0 commit comments

Comments
 (0)