five-server
Version:
Development Server with Live Reload Capability. (Maintained Fork of Live Server)
242 lines (240 loc) • 8.01 kB
JavaScript
;
/**
* @copyright
* Copyright (c) 2012 Tapio Vierros (https://github.com/tapio)
* Copyright (c) 2021 Yannick Deubel (https://github.com/yandeu)
*
* @license {@link https://github.com/yandeu/five-server/blob/main/LICENSE LICENSE}
*
* @description
* forked from live-server@1.2.1 (https://github.com/tapio/live-server)
* previously licensed under MIT (https://github.com/tapio/live-server#license)
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const const_1 = require("./const");
const misc_1 = require("./misc");
const index_1 = __importDefault(require("./index"));
const msg_1 = require("./msg");
const path_1 = __importDefault(require("path"));
// clear the log
console.clear();
const liveServer = new index_1.default();
let isTesting = false;
const opts = (0, misc_1.getConfigFile)();
opts._cli = true;
for (let i = process.argv.length - 1; i >= 2; --i) {
const arg = process.argv[i];
if (arg.indexOf('--root=') > -1) {
const root = arg.substring(7);
opts.root = root;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--baseURL=') > -1) {
const baseURL = arg.substring(10);
opts.baseURL = baseURL;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--useLocalIp') > -1) {
opts.useLocalIp = true;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--php=') > -1) {
const php = arg.substring(6);
opts.php = php;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--phpIni=') > -1) {
const phpIni = arg.substring(9);
opts.phpIni = phpIni;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--remoteLogs=') > -1) {
const log = arg.substring(13);
if (log === 'true')
opts.remoteLogs = true;
else if (log === 'false')
opts.remoteLogs = false;
else
opts.remoteLogs = log;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--port=') > -1) {
const portString = arg.substring(7);
const portNumber = parseInt(portString, 10);
if (portNumber === +portString) {
opts.port = portNumber;
process.argv.splice(i, 1);
}
}
else if (arg.indexOf('--host=') > -1) {
opts.host = arg.substring(7);
process.argv.splice(i, 1);
}
else if (arg.indexOf('--open=') > -1) {
const open = arg.substring(7);
if (open === 'true')
opts.open = true;
else if (open === 'false')
opts.open = false;
else if (/,/.test(open))
opts.open = open.split(',').map(opn => (opn === '/' ? '' : opn));
else
opts.open = open;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--watch=') > -1) {
// Will be modified later when cwd is known
opts.watch = arg.substring(8).split(',');
process.argv.splice(i, 1);
}
else if (arg.indexOf('--ignore=') > -1) {
// Will be modified later when cwd is known
opts.ignore = arg.substring(9).split(',');
process.argv.splice(i, 1);
}
else if (arg.indexOf('--ignorePattern=') > -1) {
opts.ignorePattern = new RegExp(arg.substring(16));
process.argv.splice(i, 1);
}
else if (arg === '--no-css-inject') {
opts.injectCss = false;
process.argv.splice(i, 1);
}
else if (arg === '--no-browser') {
opts.open = false;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--browser=') > -1) {
opts.browser = arg.substring(10).split(',');
process.argv.splice(i, 1);
}
else if (arg.indexOf('--entry-file=') > -1) {
const file = arg.substring(13);
if (file.length) {
opts.file = file;
process.argv.splice(i, 1);
}
}
else if (arg === '--spa') {
opts.middleware.push('spa');
process.argv.splice(i, 1);
}
else if (arg === '--quiet' || arg === '-q') {
opts.logLevel = 0;
process.argv.splice(i, 1);
}
else if (arg === '--verbose' || arg === '-V') {
opts.logLevel = 3;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--mount=') > -1) {
// e.g. "--mount=/components:./node_modules" will be ['/components', '<process.cwd()>/node_modules']
// split only on the first ":", as the path may contain ":" as well (e.g. C:\file.txt)
const match = arg.substring(8).match(/([^:]+):(.+)$/);
if (!match)
msg_1.message.error('Option --mount is wrong', null, false);
else {
match[2] = path_1.default.resolve(process.cwd(), match[2]);
opts.mount.push([match[1], match[2]]);
process.argv.splice(i, 1);
}
}
else if (arg.indexOf('--wait=') > -1) {
const waitString = arg.substring(7);
const waitNumber = parseInt(waitString, 10);
if (waitNumber === +waitString) {
opts.wait = waitNumber;
process.argv.splice(i, 1);
}
}
else if (arg === '--version' || arg === '-v') {
msg_1.message.log(const_1.NAME, const_1.VERSION);
process.exit();
}
else if (arg.indexOf('--htpasswd=') > -1) {
opts.htpasswd = arg.substring(11);
process.argv.splice(i, 1);
}
else if (arg === '--cors') {
opts.cors = true;
process.argv.splice(i, 1);
}
else if (arg === '--no-cors') {
opts.cors = false;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--https=') > -1) {
const https = arg.substring(8);
if (https === 'true')
opts.https = true;
else
opts.https = https;
process.argv.splice(i, 1);
}
else if (arg.indexOf('--https-module=') > -1) {
opts.httpsModule = arg.substring(15);
process.argv.splice(i, 1);
}
else if (arg.indexOf('--proxy=') > -1) {
// split only on the first ":", as the URL will contain ":" as well
const match = arg.substring(8).match(/([^:]+):(.+)$/);
if (!match)
msg_1.message.error('Option --proxy is wrong', null, false);
else {
opts.proxy.push([match[1], match[2]]);
process.argv.splice(i, 1);
}
}
else if (arg.indexOf('--middleware=') > -1) {
opts.middleware.push(arg.substring(13));
process.argv.splice(i, 1);
}
else if (arg === '--help' || arg === '-h') {
const cli_options = `Usage: five-server [OPTIONS]
Options:
-h, --help Print help information
-v, --version Print version information
More:
https://github.com/yandeu/five-server/blob/main/src/bin.ts
https://github.com/yandeu/five-server/blob/main/src/types.ts
`;
console.log(cli_options);
process.exit();
}
else if (arg === '--test') {
// Hidden param for tests (with jest) to exit automatically
isTesting = true;
process.argv.splice(i, 1);
}
}
// Patch paths
opts.root = process.argv[2] ? (0, misc_1.removeLeadingSlash)(process.argv[2]) : opts.root;
if (opts.watch) {
if (opts.length === 1 && opts.watch[0] === 'true')
opts.watch = true;
else if (opts.length === 1 && opts.watch[0] === 'false')
opts.watch = false;
}
if (opts.ignore) {
if (typeof opts.ignore === 'string')
opts.ignore = [opts.ignore];
}
if (!isTesting)
liveServer.start(opts);
// when testing with jest
if (isTesting) {
liveServer.start(opts).then(() => {
setTimeout(() => {
liveServer.shutdown().then(() => {
setTimeout(() => {
process.exit(0);
}, 500);
});
}, 500);
});
}
//# sourceMappingURL=bin.js.map