UNPKG

frontity

Version:

Frontity cli and entry point to other packages

54 lines (53 loc) 2.33 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const chalk_1 = __importDefault(require("chalk")); const detect_port_alt_1 = __importDefault(require("detect-port-alt")); const is_root_1 = __importDefault(require("is-root")); const inquirer_1 = __importDefault(require("inquirer")); const getProcessForPort_1 = __importDefault(require("./getProcessForPort")); const isInteractive = process.stdout.isTTY; function clearConsole() { process.stdout.write(process.platform === "win32" ? "\x1B[2J\x1B[0f" : "\x1B[2J\x1B[3J\x1B[H"); } function choosePort(host, defaultPort) { return (0, detect_port_alt_1.default)(defaultPort, host).then((port) => new Promise((resolve) => { if (port === defaultPort) { return resolve(port); } const message = process.platform !== "win32" && defaultPort < 1024 && !(0, is_root_1.default)() ? `Admin permissions are required to run a server on a port below 1024.` : `Something is already running on port ${defaultPort}.`; if (isInteractive) { clearConsole(); const existingProcess = (0, getProcessForPort_1.default)(defaultPort); const question = { type: "confirm", name: "shouldChangePort", message: chalk_1.default.yellow(message + `${existingProcess ? ` Probably:\n ${existingProcess}` : ""}`) + "\n\nWould you like to run the app on another port instead?", default: true, }; inquirer_1.default.prompt(question).then((answer) => { if (answer.shouldChangePort) { resolve(port); } else { resolve(null); } }); } else { console.log(chalk_1.default.red(message)); resolve(null); } }), (err) => { throw new Error(chalk_1.default.red(`Could not find an open port at ${chalk_1.default.bold(host)}.`) + "\n" + ("Network error message: " + err.message || err) + "\n"); }); } exports.default = choosePort;