Skip to content

Commit 25dfaf6

Browse files
adi518LinusBorg
authored andcommitted
Add dynamic port allocation (#913)
* Add dynamic port allocation * Add error handling to port allocation * Remove forgotten listen statement from dev-server.js * Set dynamically allocated port to environment variable `PORT`
1 parent 038c52e commit 25dfaf6

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

template/build/dev-server.js

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,23 +70,35 @@ app.use(staticPath, express.static('./static'))
7070

7171
const uri = 'http://localhost:' + port
7272

73-
let _resolve
74-
const readyPromise = new Promise(resolve => {
73+
var _resolve
74+
var _reject
75+
var readyPromise = new Promise((resolve, reject) => {
7576
_resolve = resolve
77+
_reject = reject
7678
})
7779

80+
var server
81+
var portfinder = require('portfinder')
82+
portfinder.basePort = port
83+
7884
console.log('> Starting dev server...')
7985
devMiddleware.waitUntilValid(() => {
80-
console.log('> Listening at ' + uri + '\n')
81-
// when env is testing, don't need open it
82-
if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
83-
opn(uri)
84-
}
85-
_resolve()
86+
portfinder.getPort((err, port) => {
87+
if (err) {
88+
_reject(err)
89+
}
90+
process.env.PORT = port
91+
var uri = 'http://localhost:' + port
92+
console.log('> Listening at ' + uri + '\n')
93+
// when env is testing, don't need open it
94+
if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
95+
opn(uri)
96+
}
97+
server = app.listen(port)
98+
_resolve()
99+
})
86100
})
87101

88-
const server = app.listen(port)
89-
90102
module.exports = {
91103
ready: readyPromise,
92104
close: () => {

template/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
"vue-loader": "^13.0.4",
9393
"vue-style-loader": "^3.0.1",
9494
"vue-template-compiler": "^2.4.2",
95+
"portfinder": "^1.0.13"
9596
"webpack": "^3.5.5",
9697
"webpack-dev-middleware": "^1.12.0",
9798
"webpack-hot-middleware": "^2.18.2",

0 commit comments

Comments
 (0)