create-quickstart-app
Version:
CLI tool to generate Next.js projects with various configurations
55 lines (54 loc) • 2.14 kB
JavaScript
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 { setupTemplates } from "./generators/templates.js";
async function main() {
logger.title("Welcome to the Next.js Project Generator!\n");
try {
// Get user options
const options = 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);