UNPKG

create-new-express-app

Version:

A CLI tool to create a TypeScript Express application with best practices

63 lines (62 loc) 2.55 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const prompts_1 = __importDefault(require("prompts")); const picocolors_1 = __importDefault(require("picocolors")); const create_express_app_1 = require("./create-express-app"); const validate_npm_package_name_1 = __importDefault(require("validate-npm-package-name")); const program = new commander_1.Command(); program .name("create-new-express-app") .description("A CLI tool to create a TypeScript Express application with best practices") .version("1.0.0") .argument("[project-directory]", "Directory to create the new Express app") .action(async (projectDirectory) => { if (!projectDirectory) { const response = await (0, prompts_1.default)({ type: "text", name: "projectDirectory", message: "Please enter the project directory:", }); projectDirectory = response.projectDirectory; } if (!projectDirectory) { console.log(picocolors_1.default.red("Project directory is required.")); process.exit(1); } const validationResult = (0, validate_npm_package_name_1.default)(projectDirectory); if (!validationResult.validForNewPackages) { console.log(picocolors_1.default.red("Invalid npm package name:")); if (validationResult.errors) { validationResult.errors.forEach((error) => console.log(picocolors_1.default.red(` - ${error}`))); } if (validationResult.warnings) { validationResult.warnings.forEach((warning) => console.log(picocolors_1.default.yellow(` - ${warning}`))); } process.exit(1); } const confirmResponse = await (0, prompts_1.default)({ type: "confirm", name: "value", message: `Do you want to create a new Express app in ${picocolors_1.default.green(projectDirectory)}?`, initial: true, }); if (confirmResponse.value) { (0, create_express_app_1.createExpressApp)(projectDirectory); } else { console.log(picocolors_1.default.red("Operation cancelled.")); } }); // Add help option program.on("--help", () => { console.log(""); console.log("Examples:"); console.log(" $ create-new-express-app my-app"); console.log(" $ create-new-express-app"); }); program.parse(process.argv);