From 01aad5d8e458727d2c02bc40d8255af30b674979 Mon Sep 17 00:00:00 2001 From: Mehdi ZAYANI Date: Wed, 23 Jul 2025 16:00:29 +0200 Subject: [PATCH] fix: support CLI argument for project name --- package.json | 2 +- src/index.js | 32 ++++++++++++++++++++++---------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index bff6b3e..5d70053 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "create-nexter", - "version": "1.0.0", + "version": "1.0.1", "description": "A modern, extensible CLI to scaffold Next.js applications with a clean architecture and optional Tailwind CSS integration.", "type": "module", "bin": { diff --git a/src/index.js b/src/index.js index 2862ade..e65e3a5 100644 --- a/src/index.js +++ b/src/index.js @@ -4,27 +4,40 @@ import generateProject from './generators/projectGenerator.js'; import { cleanProject } from '../src/scripts/cleanProject.js'; import { copyTemplateFiles } from './utils/copyTemplateFiles.js'; + +const args = process.argv.slice(2); +const defaultProjectName = args[0]; + export default async function main() { const { language } = await languagePrompt(); - const { projectName } = await prompts({ + + const response = await prompts({ type: 'text', name: 'projectName', message: 'Enter your project folder name', - initial: 'my-nexter-app', - validate: name => (name.trim() === '' ? 'Project name cannot be empty' : true) + initial: defaultProjectName || 'my-nexter-app', + validate: name => (name.trim() === '' ? 'Project name cannot be empty' : true), + + onState: state => { + if (defaultProjectName) { + state.aborted = true; + state.value = defaultProjectName; + } + } }); - console.log(`Generating Next.js project '${projectName}' with language: ${language}`); - try { - await generateProject(language, projectName); + const finalProjectName = defaultProjectName || response.projectName; - await cleanProject(projectName, language); - - await copyTemplateFiles(projectName, language); + console.log(`Generating Next.js project '${finalProjectName}' with language: ${language}`); + + try { + await generateProject(language, finalProjectName); + await cleanProject(finalProjectName, language); + await copyTemplateFiles(finalProjectName, language); console.log('✅ Cleanup and structure completed.'); console.log('🎉 Project created successfully!'); @@ -32,4 +45,3 @@ export default async function main() { console.error('❌ Error during project generation:', err); } } -