@expressots/cli
Version:
Expressots CLI - modern, fast, lightweight nodejs web framework (@cli)
68 lines (67 loc) • 2.32 kB
JavaScript
;
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;