Skip to content

Commit 07a5e9f

Browse files
committed
refactor: migrate server.listen from bin
fixes: #1510
1 parent 8212134 commit 07a5e9f

File tree

4 files changed

+50
-43
lines changed

4 files changed

+50
-43
lines changed

bin/webpack-dev-server.js

+9-42
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,10 @@ const Server = require('../lib/Server');
2222

2323
const colors = require('../lib/utils/colors');
2424
const createConfig = require('../lib/utils/createConfig');
25-
const createDomain = require('../lib/utils/createDomain');
2625
const createLogger = require('../lib/utils/createLogger');
2726
const defaultTo = require('../lib/utils/defaultTo');
2827
const findPort = require('../lib/utils/findPort');
2928
const getVersions = require('../lib/utils/getVersions');
30-
const runBonjour = require('../lib/utils/runBonjour');
31-
const status = require('../lib/utils/status');
3229
const tryParseInt = require('../lib/utils/tryParseInt');
3330

3431
let server;
@@ -159,11 +156,6 @@ function startDevServer(config, options) {
159156
}).apply(compiler);
160157
}
161158

162-
const suffix =
163-
options.inline !== false || options.lazy === true
164-
? '/'
165-
: '/webpack-dev-server/';
166-
167159
try {
168160
server = new Server(compiler, options, log);
169161
} catch (err) {
@@ -200,52 +192,27 @@ function startDevServer(config, options) {
200192
}
201193
});
202194

203-
server.listen(options.socket, options.host, (err) => {
195+
runServer();
196+
} else if (options.port) {
197+
runServer();
198+
} else {
199+
// only run port finder if no port as been specified
200+
findPort(server, DEFAULT_PORT, defaultPortRetry, (err, port) => {
204201
if (err) {
205202
throw err;
206203
}
207-
// chmod 666 (rw rw rw)
208-
const READ_WRITE = 438;
209-
210-
fs.chmod(options.socket, READ_WRITE, (err) => {
211-
if (err) {
212-
throw err;
213-
}
214-
215-
const uri = createDomain(options, server.listeningApp) + suffix;
216-
217-
status(uri, options, log, argv.color);
218-
});
204+
options.port = port;
205+
runServer();
219206
});
220-
return;
221207
}
222208

223-
const startServer = () => {
209+
function runServer() {
224210
server.listen(options.port, options.host, (err) => {
225211
if (err) {
226212
throw err;
227213
}
228-
if (options.bonjour) {
229-
runBonjour(options);
230-
}
231-
const uri = createDomain(options, server.listeningApp) + suffix;
232-
status(uri, options, log, argv.color);
233214
});
234-
};
235-
236-
if (options.port) {
237-
startServer();
238-
return;
239215
}
240-
241-
// only run port finder if no port as been specified
242-
findPort(server, DEFAULT_PORT, defaultPortRetry, (err, port) => {
243-
if (err) {
244-
throw err;
245-
}
246-
options.port = port;
247-
startServer();
248-
});
249216
}
250217

251218
processOptions(config);

examples/api/simple/server.js

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const webpackConfig = require('./webpack.config');
66

77
const compiler = Webpack(webpackConfig);
88
const devServerOptions = Object.assign({}, webpackConfig.devServer, {
9+
open: true,
910
stats: {
1011
colors: true,
1112
},

lib/Server.js

+38
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ const validateOptions = require('schema-utils');
2727
const updateCompiler = require('./utils/updateCompiler');
2828
const createLogger = require('./utils/createLogger');
2929
const getCertificate = require('./utils/getCertificate');
30+
const status = require('./utils/status');
31+
const createDomain = require('./utils/createDomain');
32+
const runBonjour = require('./utils/runBonjour');
3033
const routes = require('./utils/routes');
3134
const schema = require('./options.json');
3235

@@ -809,6 +812,41 @@ class Server {
809812
prefix: this.sockPath,
810813
});
811814

815+
if (this.options.bonjour) {
816+
runBonjour(this.options);
817+
}
818+
819+
const showStatus = () => {
820+
const suffix =
821+
this.options.inline !== false || this.options.lazy === true
822+
? '/'
823+
: '/webpack-dev-server/';
824+
825+
const uri = `${createDomain(this.options, this.listeningApp)}${suffix}`;
826+
827+
status(
828+
uri,
829+
this.options,
830+
this.log,
831+
this.options.stats && this.options.stats.colors
832+
);
833+
};
834+
835+
if (this.options.socket) {
836+
// chmod 666 (rw rw rw)
837+
const READ_WRITE = 438;
838+
839+
fs.chmod(this.options.socket, READ_WRITE, (err) => {
840+
if (err) {
841+
throw err;
842+
}
843+
844+
showStatus();
845+
});
846+
} else {
847+
showStatus();
848+
}
849+
812850
if (fn) {
813851
fn.call(this.listeningApp, err);
814852
}

lib/utils/status.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
const open = require('opn');
44
const colors = require('./colors');
55

6+
// TODO: don't emit logs when webpack-dev-server is used via Node.js API
67
function status(uri, options, log, useColor) {
78
const contentBase = Array.isArray(options.contentBase)
89
? options.contentBase.join(', ')
@@ -51,7 +52,7 @@ function status(uri, options, log, useColor) {
5152
openMessage += `: ${options.open}`;
5253
}
5354

54-
open(uri + (options.openPage || ''), openOptions).catch(() => {
55+
open(`${uri}${options.openPage || ''}`, openOptions).catch(() => {
5556
log.warn(
5657
`${openMessage}. If you are running in a headless environment, please do not use the --open flag`
5758
);

0 commit comments

Comments
 (0)