fix: live reload port fallback if port is used (#899)

* Move start reload server into separate module

* Find an unused port when starting the live reload server

* Move findUnusedPort into module

* Add tests for findUnusedPort module

* Refactor findUnusedPort

* Move starting of servers into separate module and add tests

* Remove unused constants.js

* Zap extra line breaks

* Add tests for liveReloadServer

* Rename serverController to start

* Move start into lib/server

* Add portfinder package

* Replace findUnusedPort with portfinder

* nits
This commit is contained in:
Tom Auger 2018-09-12 19:03:52 +01:00 committed by Endilie Yacop Sucipto
parent c4740f7af2
commit bbef20d345
10 changed files with 291 additions and 84 deletions

View file

@ -7,7 +7,7 @@
/* eslint-disable no-cond-assign */
function execute(port, options) {
function execute(port) {
const extractTranslations = require('../write-translations');
const metadataUtils = require('./metadataUtils');
const blog = require('./blog');
@ -22,9 +22,6 @@ function execute(port, options) {
const mkdirp = require('mkdirp');
const glob = require('glob');
const chalk = require('chalk');
const gaze = require('gaze');
const tinylr = require('tiny-lr');
const constants = require('../core/constants');
const translate = require('./translate');
const {renderToStaticMarkupWithDoctype} = require('./renderUtils');
const feed = require('./feed');
@ -105,26 +102,6 @@ function execute(port, options) {
});
}
function startLiveReload() {
process.env.NODE_ENV = 'development';
const server = tinylr();
server.listen(constants.LIVE_RELOAD_PORT, () => {
console.log(
'LiveReload server started on port %d',
constants.LIVE_RELOAD_PORT
);
});
gaze(
[`../${readMetadata.getDocsPath()}/**/*`, '**/*', '!node_modules/**/*'],
function() {
this.on('all', () => {
server.notifyClients(['/']);
});
}
);
}
reloadMetadata();
reloadMetadataBlog();
extractTranslations();
@ -398,7 +375,6 @@ function execute(port, options) {
requestFile(`http://localhost:${port}${req.path}.html`, res, next);
});
if (options.watch) startLiveReload();
app.listen(port);
}