zenith-gen
Version:
A CLI tool designed to streamline the creation of projects within the Zenith Inova ecosystem, providing optimized configurations and modern development tools.
69 lines (68 loc) • 2.3 kB
JavaScript
import { execSync } from 'child_process';
import inquirer from 'inquirer';
export async function nextJsPrompt() {
const nextJsAns = await inquirer.prompt([
{
type: 'confirm',
name: 'useTs',
message: 'Would you like to use TypeScript?',
default: true,
},
{
type: 'confirm',
name: 'useEslint',
message: 'Would you like to use ESLint?',
default: true,
},
{
type: 'confirm',
name: 'usePrettier',
message: 'Would you like to use Prettier?',
default: true,
},
{
type: 'confirm',
name: 'useSrc',
message: 'Would you like your code inside a `src/` directory?',
default: true,
},
{
type: 'confirm',
name: 'useApp',
message: 'Would you like to use App Router? (recommended)',
default: true,
},
{
type: 'confirm',
name: 'useTurbo',
message: 'Would you like to use Turbopack for `next dev`?',
default: true,
},
{
type: 'confirm',
name: 'customAlias',
message: 'Would you like to customize the import alias (`@/*` by default)?',
default: false,
},
]);
return nextJsAns;
}
export async function defineAlias(useDefault, customAlias) {
if (!useDefault && customAlias) {
const newAlias = await inquirer
.prompt([
{
type: 'input',
name: 'newAlias',
message: 'Insert custom alias',
validate: input => input ? true : 'Alias must be inserted',
},
])
.then(ans => ans.newAlias);
return newAlias;
}
return '@/*';
}
export function createNextApp(projectName, packageManager, useTs, useSrc, useTurbo, useApp, useEslint, alias) {
execSync(`npx create-next-app@latest ${projectName} --use-${packageManager} ${useTs ? '--ts' : '--js'} ${useSrc ? '--src-dir' : ''} ${useTurbo ? '--turbopack' : ''} ${useApp ? '--app' : ''} ${useEslint ? '--eslint' : ''} --import-alias ${alias} --tailwind`, { stdio: 'inherit' });
}