UNPKG

create-nodejs-express-project

Version:

A CLI for generating a new express project with the MVC structure

69 lines (62 loc) 1.51 kB
import arg from "arg"; import inquirer from "inquirer"; import { createProject } from "../src/main.js"; function parseArgumentsIntoOptions(rawArgs) { const args = arg( { "--git": Boolean, "--yes": Boolean, "--install": Boolean, "-g": "--git", "-y": "--yes", "-i": "--install", }, { argv: rawArgs.slice(2), } ); return { skipPrompts: args["--yes"] || false, git: args["--git"] || false, template: args._[0], runInstall: args["--install"] || false, }; } async function promptForMissingOptions(options) { const defaultTemplate = "express"; if (options.skipPrompts) { return { ...options, template: options.template || defaultTemplate, }; } const questions = []; if (!options.template) { questions.push({ type: "list", name: "template", message: "Please choose which project template to use", choices: ["express"], default: defaultTemplate, }); } if (!options.git) { questions.push({ type: "confirm", name: "git", message: "Initialize a git repository?", default: false, }); } const answers = await inquirer.prompt(questions); return { ...options, template: options.template || answers.template, git: options.git || answers.git, }; } export async function cli(args) { let options = parseArgumentsIntoOptions(args); options = await promptForMissingOptions(options); await createProject(options); }