36 lines
850 B
JavaScript
36 lines
850 B
JavaScript
|
'use strict';
|
||
|
|
||
|
/* eslint-disable
|
||
|
no-nested-ternary,
|
||
|
multiline-ternary,
|
||
|
space-before-function-paren
|
||
|
*/
|
||
|
const url = require('url');
|
||
|
const ip = require('internal-ip');
|
||
|
|
||
|
function createDomain (options, server) {
|
||
|
const protocol = options.https ? 'https' : 'http';
|
||
|
const hostname = options.useLocalIp ? ip.v4.sync() || 'localhost' : options.host;
|
||
|
|
||
|
const port = options.socket
|
||
|
? 0
|
||
|
: server
|
||
|
? server.address().port
|
||
|
: 0;
|
||
|
// use explicitly defined public url
|
||
|
// (prefix with protocol if not explicitly given)
|
||
|
if (options.public) {
|
||
|
return /^[a-zA-Z]+:\/\//.test(options.public)
|
||
|
? `${options.public}`
|
||
|
: `${protocol}://${options.public}`;
|
||
|
}
|
||
|
// the formatted domain (url without path) of the webpack server
|
||
|
return url.format({
|
||
|
protocol,
|
||
|
hostname,
|
||
|
port
|
||
|
});
|
||
|
}
|
||
|
|
||
|
module.exports = createDomain;
|