UNPKG

vike

Version:

The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.

96 lines (95 loc) 3.86 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseCli = parseCli; const picocolors_1 = __importDefault(require("@brillout/picocolors")); const utils_js_1 = require("./utils.js"); const getEnvVarObject_js_1 = require("../vite/shared/getEnvVarObject.js"); const commands = [ { name: 'dev', desc: 'Start development server' }, { name: 'build', desc: 'Build for production' }, { name: 'preview', desc: 'Start preview server using production build (only works for SSG apps)' }, { name: 'prerender', desc: 'Pre-render pages (only needed when prerender.disableAutoRun is true)' }, ]; function parseCli() { const command = getCommand(); const cliOptions = getCliOptions(); return { command, cliOptions }; } function getCommand() { const firstArg = process.argv[2]; if ((0, utils_js_1.includes)(commands.map((c) => c.name), firstArg)) { return firstArg; } if (!firstArg) showHelp(); showHelpOrVersion(firstArg); wrongUsage(`Unknown command ${picocolors_1.default.bold(firstArg)}`); } function getCliOptions() { let cliOptions = {}; let configNameCurrent; const commitIfDefinedWithoutValue = () => { if (configNameCurrent) commit(true); }; const commit = (val) => { (0, utils_js_1.assert)(configNameCurrent); cliOptions[configNameCurrent] = val; configNameCurrent = undefined; }; for (const arg of process.argv.slice(3)) { showHelpOrVersion(arg); if (arg.startsWith('--')) { commitIfDefinedWithoutValue(); configNameCurrent = arg.slice('--'.length); } else { if (!configNameCurrent) wrongUsage(`Unknown option ${picocolors_1.default.bold(arg)}`); commit((0, getEnvVarObject_js_1.parseJson5)(arg, `CLI option --${configNameCurrent}`)); } } commitIfDefinedWithoutValue(); return cliOptions; } function showHelp() { const TAB = ' '.repeat(3); const nameMaxLength = Math.max(...commands.map((c) => c.name.length)); console.log([ `vike@${utils_js_1.PROJECT_VERSION}`, '', 'Usage:', ...[...commands, { name: '-v', desc: "Print Vike's installed version" }].map((c) => ` ${picocolors_1.default.dim('$')} vike ${c.name.startsWith('-') ? picocolors_1.default.cyan(`${c.name}`) : picocolors_1.default.bold(`${c.name}`)}${' '.repeat(nameMaxLength - c.name.length)}${TAB}${picocolors_1.default.dim(`# ${c.desc}`)}`), '', 'Common CLI options:', [`vike dev ${picocolors_1.default.cyan('--host')}`, `vike dev ${picocolors_1.default.cyan('--port')} 80`, `vike build ${picocolors_1.default.cyan('--mode')} staging`] .map((o) => ` ${picocolors_1.default.dim('$')} ${o}`) .join('\n'), '', `More Vike settings can be passed over the ${picocolors_1.default.cyan('VIKE_CONFIG')} environment variable or as ${picocolors_1.default.cyan('CLI options')}.`, `More Vite settings can be passed over the ${picocolors_1.default.cyan('VITE_CONFIG')} environment variable.`, ``, `See ${picocolors_1.default.underline('https://vike.dev/cli')} for more information.`, ].join('\n')); process.exit(1); } function showHelpOrVersion(arg) { if (arg === '--version' || arg === '-v' || arg === '--v') { showVersion(); } if (arg === '--help' || arg === '-h' || arg === '--h') { showHelp(); } } function showVersion() { console.log(utils_js_1.PROJECT_VERSION); process.exit(1); } function wrongUsage(msg) { console.error(picocolors_1.default.red(msg)); console.log(); showHelp(); }