UNPKG

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
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' }); }