diff --git a/lib/dev-middleware.js b/lib/dev-middleware.js index b06688c..cdd2c52 100644 --- a/lib/dev-middleware.js +++ b/lib/dev-middleware.js @@ -8,8 +8,8 @@ let mime = require('mime-types'); let path = require('path'); let { createFilter } = require('@rollup/pluginutils'); -module.exports = function (app, config, options) { - expressws(app); +module.exports = function (app, config, options, server) { + expressws(app, server); let bundles = []; let isBundling = true; let files = {}; diff --git a/lib/dev-server.js b/lib/dev-server.js index 7ea5f25..d40f1fd 100644 --- a/lib/dev-server.js +++ b/lib/dev-server.js @@ -20,6 +20,18 @@ async function devServer(options) { options.before(app); } + let server + if (options.https) { + if (!(options.key && options.cert)) { + throw new Error('Usage of https requires cert and key to be set.') + } + const key = fs.readFileSync(options.key) + const cert = fs.readFileSync(options.cert) + server = https.createServer({ key, cert }, app) + } else { + server = http.createServer(app) + } + if (options.headers) { app.all('*', (req, res, next) => { for (let prop in options.headers) { @@ -38,7 +50,7 @@ async function devServer(options) { hmrHost: options.hmrHost, contentBase: options.contentBase, publicPath: options.publicPath - })); + }, server)); if (options.proxy) { Object.keys(options.proxy).forEach(route => { @@ -63,17 +75,7 @@ async function devServer(options) { app.use(fallback(entryPoint, { root: options.contentBase })); } - if (options.https) { - if (!(options.key && options.cert)) { - throw new Error('Usage of https requires cert and key to be set.'); - } - - const key = fs.readFileSync(options.key); - const cert = fs.readFileSync(options.cert); - https.createServer({ key, cert }, app).listen(options.port); - } else { - app.listen(options.port); - } + server.listen(options.port); console.log(`[Nollup] Listening on ${options.https ? 'https' : 'http'}://localhost:${options.port}`); }