UNPKG

zoro-cli

Version:

https://github.com/vuejs/vue-cli

68 lines (64 loc) 1.83 kB
/** * Copyright (c) 2015-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file at * https://github.com/facebookincubator/create-react-app/blob/master/LICENSE */ const url = require('url') const address = require('address') module.exports = function prepareUrls(protocol, host, port, pathname = '/') { const formatUrl = hostname => url.format({ protocol, hostname, port, pathname, }) const prettyPrintUrl = hostname => url.format({ protocol, hostname, port, pathname, }) const isUnspecifiedHost = host === '0.0.0.0' || host === '::' let prettyHost let lanUrlForConfig let lanUrlForTerminal if (isUnspecifiedHost) { prettyHost = 'localhost' try { // This can only return an IPv4 address lanUrlForConfig = address.ip() lanUrlForTerminal = prettyPrintUrl(lanUrlForConfig) // if (lanUrlForConfig) { // // Check if the address is a private ip // // https://en.wikipedia.org/wiki/Private_network#Private_IPv4_address_spaces // if ( // /^10[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test( // lanUrlForConfig // ) // ) { // // Address is private, format it for later use // lanUrlForTerminal = prettyPrintUrl(lanUrlForConfig) // } else { // // Address is not private, so we will discard it // lanUrlForConfig = undefined // } // } } catch (_e) { // ignored } } else { prettyHost = host } const localUrlForTerminal = prettyPrintUrl(prettyHost) const localUrlForBrowser = formatUrl(prettyHost) return { lanUrlForConfig, lanUrlForTerminal, localUrlForTerminal, localUrlForBrowser, } }