30 lines
808 B
JavaScript
30 lines
808 B
JavaScript
'use strict';
|
|
|
|
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 || 'localhost';
|
|
|
|
// eslint-disable-next-line no-nested-ternary
|
|
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;
|