diff --git a/bin/cli-flags.js b/bin/cli-flags.js index 0f62ab15d7..c23d102024 100644 --- a/bin/cli-flags.js +++ b/bin/cli-flags.js @@ -16,11 +16,18 @@ module.exports = { }, { name: 'port', - type: Number, + type: [Number, String], configs: [ { type: 'number', }, + { + type: 'string', + }, + { + type: 'enum', + values: ['auto'], + }, ], description: 'The port server will listen to.', }, diff --git a/test/cli/__snapshots__/cli.test.js.snap.webpack4 b/test/cli/__snapshots__/cli.test.js.snap.webpack4 index fe1971d386..a1fc9be2f2 100644 --- a/test/cli/__snapshots__/cli.test.js.snap.webpack4 +++ b/test/cli/__snapshots__/cli.test.js.snap.webpack4 @@ -164,6 +164,23 @@ exports[`CLI --no-https-request-cert 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; +exports[`CLI --port is auto: stderr 1`] = ` +" [webpack-dev-server] Project is running at: + [webpack-dev-server] Loopback: http://localhost:/ + [webpack-dev-server] On Your Network (IPv4): http://:/ + [webpack-dev-server] On Your Network (IPv6): http://[]:/ + [webpack-dev-server] Content not from webpack is served from '/public' directory" +`; + +exports[`CLI --port is string: stderr 1`] = ` +" [webpack-dev-server] The \\"port\\" specified in options is different from the port passed as an argument. Will be used from arguments. + [webpack-dev-server] Project is running at: + [webpack-dev-server] Loopback: http://localhost:/ + [webpack-dev-server] On Your Network (IPv4): http://:/ + [webpack-dev-server] On Your Network (IPv6): http://[]:/ + [webpack-dev-server] Content not from webpack is served from '/public' directory" +`; + exports[`CLI https and other related options 1`] = ` " [webpack-dev-server] Project is running at: [webpack-dev-server] Loopback: https://localhost:/ diff --git a/test/cli/__snapshots__/cli.test.js.snap.webpack5 b/test/cli/__snapshots__/cli.test.js.snap.webpack5 index 7ce3811dce..539e62098b 100644 --- a/test/cli/__snapshots__/cli.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/cli.test.js.snap.webpack5 @@ -164,6 +164,23 @@ exports[`CLI --no-https-request-cert 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; +exports[`CLI --port is auto: stderr 1`] = ` +" [webpack-dev-server] Project is running at: + [webpack-dev-server] Loopback: http://localhost:/ + [webpack-dev-server] On Your Network (IPv4): http://:/ + [webpack-dev-server] On Your Network (IPv6): http://[]:/ + [webpack-dev-server] Content not from webpack is served from '/public' directory" +`; + +exports[`CLI --port is string: stderr 1`] = ` +" [webpack-dev-server] The \\"port\\" specified in options is different from the port passed as an argument. Will be used from arguments. + [webpack-dev-server] Project is running at: + [webpack-dev-server] Loopback: http://localhost:/ + [webpack-dev-server] On Your Network (IPv4): http://:/ + [webpack-dev-server] On Your Network (IPv6): http://[]:/ + [webpack-dev-server] Content not from webpack is served from '/public' directory" +`; + exports[`CLI https and other related options 1`] = ` " [webpack-dev-server] Project is running at: [webpack-dev-server] Loopback: https://localhost:/ diff --git a/test/cli/cli.test.js b/test/cli/cli.test.js index 7cede8787a..af3796c17f 100644 --- a/test/cli/cli.test.js +++ b/test/cli/cli.test.js @@ -432,6 +432,32 @@ describe('CLI', () => { .catch(done); }); + it('--port is string', (done) => { + testBin(`--port "8080"`) + .then((output) => { + expect(output.exitCode).toEqual(0); + expect(normalizeStderr(output.stderr, { ipv6: true })).toMatchSnapshot( + 'stderr' + ); + + done(); + }) + .catch(done); + }); + + it(`--port is auto`, (done) => { + testBin(`--port auto`) + .then((output) => { + expect(output.exitCode).toEqual(0); + expect(normalizeStderr(output.stderr, { ipv6: true })).toMatchSnapshot( + 'stderr' + ); + + done(); + }) + .catch(done); + }); + it('--open', (done) => { testBin('--open') .then((output) => {