create-react-vtw
Version:
CLI pour créer un projet ReactJs + ViteJs + Tailwind CSS v4.1
55 lines (47 loc) • 2.04 kB
JavaScript
import inquirer from "inquirer";
import chalk from 'chalk';
import figures from 'figures';
import path from "path";
import fs from "fs";
import { execSync } from "child_process";
import process from "process";
import { fileURLToPath } from "url";
import { installTailwind } from "./installTailwind.js";
import { updateFiles } from "./updateFiles.js";
// Reconstruction de __dirname pour ESModules
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
export async function runCreateReactVtw() {
const { projectName } = await inquirer.prompt([
{
type: "input",
name: "projectName",
message: "Comment souhaitez-vous nommer votre projet ?",
validate: (input) =>
input.trim() !== "" || "Le nom du projet est requis.",
},
]);
try {
console.log(
chalk.blue(`\n${figures.pointer} Création du projet ${chalk.bold(projectName)} avec React + Vite...`)
);
execSync(`npm create vite@latest ${projectName} -- --template react`, {
stdio: "inherit",
});
const projectPath = path.resolve(process.cwd(), projectName);
if (fs.existsSync(projectPath)) {
process.chdir(projectPath);
} else {
throw new Error(`Le dossier ${projectPath} n'existe pas.`);
}
console.log(chalk.blue(`${figures.pointer} Installation des dépendances...`));
execSync("npm install", { stdio: "inherit" });
await installTailwind();
await updateFiles(projectPath);
console.log(chalk.green(`\n${figures.tick} Félicitations ! Votre projet a été créé avec succès.`));
console.log(chalk.cyan(`${figures.arrowRight} cd ${projectName}`));
console.log(chalk.cyan(`${figures.arrowRight} npm run dev`));
} catch (err) {
console.error(chalk.red(`\n${figures.cross} Une erreur est survenue : ${err.message}`));
}
}