UNPKG

create-quickstart-app

Version:

CLI tool to generate Next.js projects with various configurations

67 lines (54 loc) 2.12 kB
#!/usr/bin/env node import path from "path"; import { promptUser } from "./prompts/index.js"; import { createNextProject } from "./generators/nextjs.js"; import { setupClerk } from "./generators/clerk.js"; import { setupORM } from "./generators/orm.js"; import { initializeGit } from "./generators/git.js"; import { logger } from "./utils/logger.js"; import { createSpinner } from "./utils/spinner.js"; import { execa } from "execa"; import { GlobalOptions } from "./types/index.js"; import { setupTemplates } from "./generators/templates.js"; async function main() { logger.title("Welcome to the Next.js Project Generator!\n"); try { // Get user options const options: GlobalOptions = await promptUser(); const projectPath = path.join(process.cwd(), options.projectName); // Create Next.js project await createNextProject(options); // Setup Clerk if selected if (options.useClerk) { await setupClerk(projectPath); } // Setup ORM if selected if (options.orm !== "None") { await setupORM(projectPath, options.orm, options.database); } // Would you like use any prebuilt templates? if (options.useTemplates) { await setupTemplates(projectPath, options.templates); } // Initialize git if selected if (options.initGit) { await initializeGit(projectPath); } // Install dependencies if selected if (options.installDeps) { const spinner = createSpinner("Installing dependencies..."); await execa("npm", ["install"], { cwd: projectPath }); spinner.succeed("Dependencies installed"); } // //go to the project directory and run the project using npm run dev // const spinner = createSpinner("Running the project..."); // await execa("npm", ["run", "dev"], { cwd: projectPath }); // spinner.succeed("Project is running"); // Show next steps logger.nextSteps(options.projectName); } catch (error) { logger.error("An error occurred:", error); process.exit(1); } } main().catch(console.error);