UNPKG

@expressots/cli

Version:

Expressots CLI - modern, fast, lightweight nodejs web framework (@cli)

68 lines (67 loc) 2.32 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createProject = void 0; const form_1 = require("./form"); const semver_1 = __importDefault(require("semver")); const cli_ui_1 = require("../utils/cli-ui"); const chalk_1 = __importDefault(require("chalk")); const packageManagers = [ "npm", "yarn", "pnpm", ...(process.platform !== "win32" ? ["bun"] : []), ]; const commandOptions = (yargs) => { return yargs .positional("project-name", { describe: "The name of the project", type: "string", }) .option("template", { describe: "The project template to use", type: "string", choices: ["opinionated", "non-opinionated", "micro"], alias: "t", }) .option("package-manager", { describe: "The package manager to use", type: "string", choices: packageManagers, alias: "p", }) .option("directory", { describe: "The directory for new project", type: "string", alias: "d", }) .implies("package-manager", "template") .implies("template", "package-manager"); }; const checkNodeVersion = () => { const minVersion = "18.0.0"; const maxVersion = "22.5.1"; const currentVersion = process.version; if (!semver_1.default.satisfies(currentVersion, `>=${minVersion} <=${maxVersion}`)) { const msg = `Node.js version [${chalk_1.default.bold(chalk_1.default.white(currentVersion))}] is not tested. Please use a version between ${minVersion} and ${maxVersion}.`; (0, cli_ui_1.printWarning)(msg); } }; const createProject = () => { return { command: "new <project-name> [package-manager] [template] [directory]", describe: "Create ExpressoTS application.", builder: commandOptions, handler: async ({ projectName, packageManager, template, directory, }) => { checkNodeVersion(); return await (0, form_1.projectForm)(projectName, [ packageManager, template, directory, ]); }, }; }; exports.createProject = createProject;