Skip to content

Commit 98e4e69

Browse files
committed
Merge branch 'master' into options-schema
2 parents b284c6f + dc3eed7 commit 98e4e69

File tree

6 files changed

+69
-24
lines changed

6 files changed

+69
-24
lines changed

bin/webpack-dev-server.js

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ var open = require("opn");
55
var fs = require("fs");
66
var net = require("net");
77
var url = require("url");
8+
var portfinder = require("portfinder");
89

910
// Local version replaces global one
1011
try {
@@ -53,6 +54,11 @@ var CONNECTION_GROUP = "Connection options:";
5354
var RESPONSE_GROUP = "Response options:";
5455
var BASIC_GROUP = "Basic options:";
5556

57+
// Taken out of yargs because we must know if
58+
// it wasn't given by the user, in which case
59+
// we should use portfinder.
60+
var DEFAULT_PORT = 8080;
61+
5662
yargs.options({
5763
"lazy": {
5864
type: "boolean",
@@ -150,7 +156,6 @@ yargs.options({
150156
},
151157
"port": {
152158
describe: "The port",
153-
default: 8080,
154159
group: CONNECTION_GROUP
155160
},
156161
"socket": {
@@ -197,9 +202,6 @@ function processOptions(wpOpt) {
197202
if(argv.public)
198203
options.public = argv.public;
199204

200-
if(argv.port !== 8080 || !options.port)
201-
options.port = argv.port;
202-
203205
if(argv.socket)
204206
options.socket = argv.socket;
205207

@@ -296,6 +298,25 @@ function processOptions(wpOpt) {
296298
if(argv["open"])
297299
options.open = true;
298300

301+
// Kind of weird, but ensures prior behavior isn't broken in cases
302+
// that wouldn't throw errors. E.g. both argv.port and options.port
303+
// were specified, but since argv.port is 8080, options.port will be
304+
// tried first instead.
305+
options.port = argv.port === DEFAULT_PORT ? (options.port || argv.port) : (argv.port || options.port);
306+
if(options.port) {
307+
startDevServer(wpOpt, options);
308+
return;
309+
}
310+
311+
portfinder.basePort = DEFAULT_PORT;
312+
portfinder.getPort(function(err, port) {
313+
if(err) throw err;
314+
options.port = port;
315+
startDevServer(wpOpt, options);
316+
});
317+
}
318+
319+
function startDevServer(wpOpt, options) {
299320
var protocol = options.https ? "https" : "http";
300321

301322
// the formatted domain (url without path) of the webpack server

examples/https/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ A fake certificate is used to enable https.
88

99
You can provide the following SSL options to override the fake certificate:
1010

11-
* Certificate options e.g. `node ../../bin/webpack-dev-server.js --open --https --cacert=../../ssl/ca.pem --cert=../../ssl/server.crt --key=../../ssl/server.key`
11+
* Certificate options e.g. `node ../../bin/webpack-dev-server.js --open --https --cert=../../ssl/server.pem --key=../../ssl/server.pem`
1212
* PFX and Passphrase e.g. `node ../../bin/webpack-dev-server.js --open --https --pfx=./test_cert.pfx --pfx-passphrase=sample`
1313

1414
## What should happen

examples/modus-inline/webpack.config.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,20 @@ module.exports = {
22
context: __dirname,
33
entry: "./app.js",
44
module: {
5-
loaders: [
6-
{ test: /\.less$/, loader: "style!css!less" },
7-
{ test: /\.png$/, loader: "file?prefix=img/" }
5+
rules: [
6+
{
7+
test: /\.less$/,
8+
use: [
9+
{ loader: "style-loader" },
10+
{ loader: "css-loader" },
11+
{ loader: "less-loader" }
12+
]
13+
},
14+
{
15+
test: /\.png$/,
16+
loader: "file-loader",
17+
options: { prefix: "img/" }
18+
}
819
]
920
}
1021
}

examples/webpack-config-array/webpack.config.js

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,20 @@ module.exports = [
44
context: __dirname,
55
entry: "./app.js",
66
module: {
7-
loaders: [
8-
{ test: /\.less$/, loader: "style!css!less" },
9-
{ test: /\.png$/, loader: "file?prefix=img/" }
7+
rules: [
8+
{
9+
test: /\.less$/,
10+
use: [
11+
{ loader: "style-loader" },
12+
{ loader: "css-loader" },
13+
{ loader: "less-loader" }
14+
]
15+
},
16+
{
17+
test: /\.png$/,
18+
loader: "file-loader",
19+
options: { prefix: "img/" }
20+
}
1021
]
1122
}
1223
},
@@ -17,9 +28,20 @@ module.exports = [
1728
filename: "bundle2.js"
1829
},
1930
module: {
20-
loaders: [
21-
{ test: /\.less$/, loader: "style!css!less" },
22-
{ test: /\.png$/, loader: "url?limit=100000" }
31+
rules: [
32+
{
33+
test: /\.less$/,
34+
use: [
35+
{ loader: "style-loader" },
36+
{ loader: "css-loader" },
37+
{ loader: "less-loader" }
38+
]
39+
},
40+
{
41+
test: /\.png$/,
42+
loader: "url-loader",
43+
options: { limit: 100000 }
44+
}
2345
]
2446
},
2547
plugins: [

lib/Server.js

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,16 +132,6 @@ function Server(compiler, options) {
132132

133133
proxy: function() {
134134
if(options.proxy) {
135-
/**
136-
* Assume a proxy configuration specified as:
137-
* proxy: 'a url'
138-
*/
139-
if(typeof options.proxy === "string") {
140-
options.proxy = [{
141-
context: options.proxy
142-
}];
143-
}
144-
145135
/**
146136
* Assume a proxy configuration specified as:
147137
* proxy: {

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"express": "^4.13.3",
1414
"http-proxy-middleware": "~0.17.1",
1515
"opn": "4.0.2",
16+
"portfinder": "^1.0.9",
1617
"serve-index": "^1.7.2",
1718
"sockjs": "0.3.18",
1819
"sockjs-client": "1.1.1",

0 commit comments

Comments
 (0)