create-quickstart-app
Version:
CLI tool to generate Next.js projects with various configurations
48 lines (47 loc) • 1.45 kB
JavaScript
import { execSync } from "child_process";
import { createSpinner } from "../utils/spinner.js";
import { logger } from "../utils/logger.js";
let globalOptions;
export async function createNextProject(options) {
const { projectName, language, useClerk, orm, database, initGit, installDeps, useSrcDir, useTemplates, templates, } = options;
globalOptions = {
projectName,
language,
useClerk,
orm,
database,
initGit,
installDeps,
useSrcDir,
useTemplates,
templates,
};
const spinner = createSpinner("Creating Next.js project...");
const args = [
"create-next-app@latest",
projectName,
"--use-npm",
"--eslint",
language === "TypeScript" ? "--ts" : "--js",
"--tailwind",
"--app",
useSrcDir ? "--src-dir" : "--no-src-dir",
"--turbopack",
"--import-alias=@",
"--skip-questions",
];
try {
// logger.info("\nRunning command: " + `npx ${args.join(" ")}`);
execSync(`npx ${args.join(" ")}`, { stdio: "inherit" });
spinner.succeed("Next.js project created successfully");
return projectName;
}
catch (error) {
spinner.fail("Failed to create Next.js project");
logger.error("Error creating Next.js project", error);
throw error;
}
}
export function getGlobalOptions() {
return globalOptions;
}