@jadis/create
Version:
Jadis boilerplate generator
51 lines (37 loc) • 1.43 kB
JavaScript
const [template, projectName] = process.argv.slice(2);
if (template !== 'js' && template !== 'ts') {
console.error('Please specify a valid template: "js" or "ts".');
process.exit(1);
}
if (!projectName) {
console.error('Please specify a project name.');
process.exit(1);
}
const fs = require('node:fs');
const cwd = process.cwd();
const path = require('node:path');
const templatePath = path.join(__dirname, 'templates', template);
const projectPath = path.join(cwd, projectName);
const createProject = (templatePath, projectPath) => {
// Create project directory
fs.mkdirSync(projectPath, { recursive: true });
const templateFiles = fs.readdirSync(templatePath);
// Copy template files to project directory
templateFiles.forEach((file) => {
const srcFile = path.join(templatePath, file);
const destFile = path.join(projectPath, file);
if (fs.lstatSync(srcFile).isDirectory()) {
createProject(srcFile, destFile);
} else {
fs.copyFileSync(srcFile, destFile);
}
});
};
createProject(templatePath, projectPath);
console.log('\nCreating a new project...\n');
console.log(`✅ Project "${projectName}" created successfully with the "${template}" template.\n`);
console.log('Next steps:\n');
console.log(` 1. cd ${projectName}`);
console.log(' 2. npm install # install dependencies');
console.log(' 3. npm run dev # start the project\n');