Skip to content

CLI Reference

npx create-xtarter-app@latest [project-name] [options]
ArgumentRequiredDescription
project-nameNoName for the new project. If omitted, you’ll be prompted.
OptionAliasTypeDefaultDescription
--template-tstringTemplate ID to use (skips prompt). See Templates
--pm-pstringPackage manager (pnpm, npm, bun, yarn)
--no-gitbooleanSkip git initialization
--cleanbooleanRemove CI/CD config files after scaffolding
--force-fbooleanOverwrite existing target directory
--refstringGit ref (branch, tag, or commit SHA) to download
--yes-ybooleanUse defaults for all prompts
--help-hbooleanShow help text
--version-vbooleanShow version
CommandDescription
preview [template]Preview template details without scaffolding
ManagerCommandNote
pnpm(default)Fast, disk-efficient
npmDefault Node.js
bunUltra-fast runtime
yarnClassic choice
Terminal window
# Interactive — prompts for everything
pnpm create xtarter-app
# Quick start with defaults
pnpm create xtarter-app my-app --yes
# Scaffold in current directory
pnpm create xtarter-app . -t vite-tailwind
# Pick a template
pnpm create xtarter-app my-app --template vite-tailwind
# Specific package manager, no git
pnpm create xtarter-app my-app --pm bun --no-git
# Overwrite existing directory
pnpm create xtarter-app my-app -t vite-tailwind --force
# Download a specific tag
pnpm create xtarter-app my-app --ref v1.0.0
# Preview a template
pnpm create xtarter-app preview next-tailwind
  • Invalid template ID — prints all valid template IDs and exits
  • Invalid package manager — prints valid options and exits
  • Target directory exists — cancels with an error unless --force is used
  • Invalid project name — validation fails during prompt
  • Download failure — retries up to 3 times, then exits with error
  • Install failure — cleans up created directory (if scaffolded to a new path), then exits
  • Partial scaffold — if any step after download fails, created directories are cleaned up automatically

The package also exports a programmatic API for use in scripts and tooling:

import {
downloadTemplateFiles,
modifyPackageJson,
installDependencies,
initializeGit,
isGitInstalled,
cleanCIConfigs,
getTemplateById,
getTemplateChoices,
TEMPLATES,
} from 'create-xtarter-app'
// Download a template
await downloadTemplateFiles({
template: getTemplateById('vite-tailwind')!,
targetPath: './my-app',
})
// Modify package.json
await modifyPackageJson({ projectPath: './my-app', projectName: 'my-app' })
// Install dependencies
await installDependencies({ packageManager: 'pnpm', projectPath: './my-app' })
// Initialize git
if (isGitInstalled()) {
await initializeGit({ projectPath: './my-app' })
}

See Templates for the full TemplateConfig type.