32 lines
842 B
JavaScript
32 lines
842 B
JavaScript
'use strict';
|
|
|
|
const url = require('url');
|
|
|
|
function createDomain(options, server) {
|
|
const protocol = options.https ? 'https' : 'http';
|
|
// use location hostname and port by default in createSocketUrl
|
|
// ipv6 detection is not required as 0.0.0.0 is just used as a placeholder
|
|
let hostname;
|
|
|
|
if (server) {
|
|
hostname = server.address().address;
|
|
} else {
|
|
hostname = '0.0.0.0';
|
|
}
|
|
|
|
const port = 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;
|