guido
Version:
基于webpack4的一键式开发工具,集成handlebars、雪碧图、SVG Sprite、自定义资源注入等方式
47 lines (39 loc) • 1.01 kB
JavaScript
;
const chalk = require('chalk');
const detect = require('detect-port-alt');
const getProcessForPort = require('./getProcessForPort');
function isRoot() {
return process.getuid && process.getuid() === 0;
}
function checkDetectPort(port, host) {
port = parseInt(port, 10) || 0;
return new Promise((resolve, reject) => {
detect(port, host, (err, _port) => {
if (err) {
reject(err);
} else {
if (port === _port) {
resolve(port);
} else {
let message = `目前 ${chalk.bold(port)} 端口被占用`;
if (
process.platform !== 'win32' &&
port < 1024 &&
!isRoot()
) {
message =
'`在1024以下的端口上运行服务器需要管理员权限`';
}
const existingProcess = getProcessForPort(port);
if (existingProcess) {
message += `,该端口使用情况:\n ${existingProcess}`;
}
reject({
message: chalk.yellow(message),
});
}
}
});
});
}
module.exports = checkDetectPort;