create-new-express-app
Version:
A CLI tool to create a TypeScript Express application with best practices
63 lines (62 loc) • 2.55 kB
JavaScript
;
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);