UNPKG

@excli/express

Version:

A cli tool for creating Express.js applications, supporting both JavaScript and TypeScript.

70 lines 2.16 kB
import { cancel } from "@clack/prompts"; import { fireShell, modifyPackageJson } from "./scripts.js"; import { dockerMongodb, dockerMysql, dockerPostgres } from "./docker.js"; export const directories = [ "db", "controllers", "routes", "middlewares", "services", "types", "utils", "models", ]; export function terminate(message) { cancel(message); process.exit(0); } export function sleep(timer = 1500) { return new Promise((r) => setTimeout(r, timer)); } export function database(db, name) { switch (db) { case "mongodb": return dockerMongodb(name); case "postgres": return dockerPostgres(name); case "mysql": return dockerMysql(name); default: return null; } } export async function packageJsonInit(pkgManager, targetDir, language) { try { let args = []; if (pkgManager === "npm") args = ["init", "-y"]; else if (pkgManager === "pnpm" || pkgManager === "yarn") args = ["init"]; else throw new Error("Unsupported package manager"); await fireShell(pkgManager, args, targetDir); modifyPackageJson(targetDir, language); } catch (err) { console.error(`❌ ${pkgManager} command failed: ${err?.message}`); } } export async function installPackages(pkgManager, targetDir, language, devTools) { let packages = [ "express", "cors", "helmet", "morgan", "compression", "cookie-parser", ]; let devPackages = []; if (devTools.includes("prettier")) devPackages.push("prettier"); if (language === "ts") { devPackages.push("@types/node", "@types/express", "typescript", "@types/cors", "@types/morgan", "@types/compression", "@types/cookie-parser"); } const installCmd = pkgManager === "npm" ? "install" : "add"; await fireShell(pkgManager, [installCmd, ...packages], targetDir); if (devPackages.length > 0) { await fireShell(pkgManager, [installCmd, ...devPackages, "-D"], targetDir); } } //# sourceMappingURL=utils.js.map