Skip to content

Commit 7e86922

Browse files
authored
fix: --port flag parsing (#3374)
1 parent 750fc63 commit 7e86922

File tree

4 files changed

+68
-1
lines changed

4 files changed

+68
-1
lines changed

bin/cli-flags.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,18 @@ module.exports = {
1616
},
1717
{
1818
name: 'port',
19-
type: Number,
19+
type: [Number, String],
2020
configs: [
2121
{
2222
type: 'number',
2323
},
24+
{
25+
type: 'string',
26+
},
27+
{
28+
type: 'enum',
29+
values: ['auto'],
30+
},
2431
],
2532
description: 'The port server will listen to.',
2633
},

test/cli/__snapshots__/cli.test.js.snap.webpack4

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,23 @@ exports[`CLI --no-https-request-cert 1`] = `
164164
<i> [webpack-dev-server] Content not from webpack is served from '<cwd>/public' directory"
165165
`;
166166

167+
exports[`CLI --port is auto: stderr 1`] = `
168+
"<i> [webpack-dev-server] Project is running at:
169+
<i> [webpack-dev-server] Loopback: http://localhost:<port>/
170+
<i> [webpack-dev-server] On Your Network (IPv4): http://<network-ip-v4>:<port>/
171+
<i> [webpack-dev-server] On Your Network (IPv6): http://[<network-ip-v6>]:<port>/
172+
<i> [webpack-dev-server] Content not from webpack is served from '<cwd>/public' directory"
173+
`;
174+
175+
exports[`CLI --port is string: stderr 1`] = `
176+
"<w> [webpack-dev-server] The \\"port\\" specified in options is different from the port passed as an argument. Will be used from arguments.
177+
<i> [webpack-dev-server] Project is running at:
178+
<i> [webpack-dev-server] Loopback: http://localhost:<port>/
179+
<i> [webpack-dev-server] On Your Network (IPv4): http://<network-ip-v4>:<port>/
180+
<i> [webpack-dev-server] On Your Network (IPv6): http://[<network-ip-v6>]:<port>/
181+
<i> [webpack-dev-server] Content not from webpack is served from '<cwd>/public' directory"
182+
`;
183+
167184
exports[`CLI https and other related options 1`] = `
168185
"<i> [webpack-dev-server] Project is running at:
169186
<i> [webpack-dev-server] Loopback: https://localhost:<port>/

test/cli/__snapshots__/cli.test.js.snap.webpack5

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,23 @@ exports[`CLI --no-https-request-cert 1`] = `
164164
<i> [webpack-dev-server] Content not from webpack is served from '<cwd>/public' directory"
165165
`;
166166

167+
exports[`CLI --port is auto: stderr 1`] = `
168+
"<i> [webpack-dev-server] Project is running at:
169+
<i> [webpack-dev-server] Loopback: http://localhost:<port>/
170+
<i> [webpack-dev-server] On Your Network (IPv4): http://<network-ip-v4>:<port>/
171+
<i> [webpack-dev-server] On Your Network (IPv6): http://[<network-ip-v6>]:<port>/
172+
<i> [webpack-dev-server] Content not from webpack is served from '<cwd>/public' directory"
173+
`;
174+
175+
exports[`CLI --port is string: stderr 1`] = `
176+
"<w> [webpack-dev-server] The \\"port\\" specified in options is different from the port passed as an argument. Will be used from arguments.
177+
<i> [webpack-dev-server] Project is running at:
178+
<i> [webpack-dev-server] Loopback: http://localhost:<port>/
179+
<i> [webpack-dev-server] On Your Network (IPv4): http://<network-ip-v4>:<port>/
180+
<i> [webpack-dev-server] On Your Network (IPv6): http://[<network-ip-v6>]:<port>/
181+
<i> [webpack-dev-server] Content not from webpack is served from '<cwd>/public' directory"
182+
`;
183+
167184
exports[`CLI https and other related options 1`] = `
168185
"<i> [webpack-dev-server] Project is running at:
169186
<i> [webpack-dev-server] Loopback: https://localhost:<port>/

test/cli/cli.test.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,32 @@ describe('CLI', () => {
432432
.catch(done);
433433
});
434434

435+
it('--port is string', (done) => {
436+
testBin(`--port "8080"`)
437+
.then((output) => {
438+
expect(output.exitCode).toEqual(0);
439+
expect(normalizeStderr(output.stderr, { ipv6: true })).toMatchSnapshot(
440+
'stderr'
441+
);
442+
443+
done();
444+
})
445+
.catch(done);
446+
});
447+
448+
it(`--port is auto`, (done) => {
449+
testBin(`--port auto`)
450+
.then((output) => {
451+
expect(output.exitCode).toEqual(0);
452+
expect(normalizeStderr(output.stderr, { ipv6: true })).toMatchSnapshot(
453+
'stderr'
454+
);
455+
456+
done();
457+
})
458+
.catch(done);
459+
});
460+
435461
it('--open', (done) => {
436462
testBin('--open')
437463
.then((output) => {

0 commit comments

Comments
 (0)