create-sackapp
v2.0.0
Published
Genera en segundos un proyecto Vite + React (TS/JS) + TailwindCSS v4 + shadcn/ui listo para producir. Elige tus extras y a codear.
Maintainers
Readme
create-sackapp
CLI publicado en npm que te ahorra 20 minutos de configuración cada vez que arrancas un proyecto React nuevo. Te hace cuatro preguntas y te deja una carpeta lista para npm run dev con:
- ⚡ Vite + React (TypeScript o JavaScript, tú eliges)
- 🎨 TailwindCSS v4 (sin postcss config; plugin oficial de Vite)
- 🧩 shadcn/ui inicializado con el componente
Button - 🎯 Alias
@/funcionando en Vite y tsconfig (sinbaseUrldeprecado) - 🛠
cn()helper preescrito ensrc/lib/utils - 📌
.nvmrccon Node 24 (evita el aviso de Vercel de deprecación de Node 18) - 🎁 Opcionales: axios · zustand · sweetalert2 · toastify-js · useHooks · react-router-dom · @supabase/supabase-js
Uso
npm create sackapp@latest
# o
npx create-sackappTe pregunta:
- Nombre de la app (default
mi-app) - Lenguaje — TypeScript (recomendado) o JavaScript
- shadcn/ui — sí / no (por defecto sí; instala componente Button)
- Dependencias extra (multi-select con
<space>para marcar)
Al terminar:
cd mi-app
npm run devY ya tienes un proyecto funcionando con base moderna, sin configuración inicial que hacer.
Qué hace por dentro
npm create vite@latest <app> -- --template react[-ts]npm install- Instala
tailwindcss+@tailwindcss/vite(v4). - Reescribe
src/index.cssa un simple@import "tailwindcss";. - Reescribe
vite.config.[jt]scon:- Plugin
@tailwindcss/vite - Alias
@/→./src/usandofileURLToPath(new URL(...))(compatible con ESM, sin__dirnameroto).
- Plugin
- Añade
paths: { "@/*": ["./src/*"] }entsconfig.app.json(ojsconfig.jsonsi es JS). SinbaseUrl— no más warnings de deprecación de TS 7. - Instala
clsx+tailwind-merge+class-variance-authority+lucide-react. - Escribe
src/lib/utils.[jt]sconcn(...)listo para pegar a shadcn. - (Si eliges shadcn) Escribe
components.jsoncon config sensata y correnpx shadcn@latest add button --yes --overwrite. - Escribe
.nvmrccon24. - Instala los extras que hayas marcado.
Todo no-interactivo: no se cuelga esperando confirmaciones.
Estructura generada
mi-app/
├── src/
│ ├── App.tsx (o .jsx)
│ ├── main.tsx (o .jsx)
│ ├── index.css # @import "tailwindcss"
│ ├── lib/
│ │ └── utils.ts # cn(...) helper
│ └── components/
│ └── ui/
│ └── button.tsx # shadcn/ui Button
├── vite.config.ts # con alias @/ (ESM correcto)
├── tsconfig.app.json # con paths, sin baseUrl
├── components.json # config shadcn
├── .nvmrc # 24
└── package.json # ESMComparación con la versión anterior
| | v1.x | v2.0 |
|---|---|---|
| Tailwind | v3 (con postcss config) | v4 (plugin de Vite, sin postcss) |
| Alias en ESM | __dirname roto | ✅ fileURLToPath(new URL(...)) |
| TS config | con baseUrl deprecado | ✅ solo paths |
| Elección de lenguaje | forzaba TS + template JS | ✅ prompt TS / JS |
| shadcn init | interactivo (colgaba) | ✅ config manual + add --yes |
| Node version | no configurado | ✅ .nvmrc = 24 |
| Extras | 5 opciones | ✅ 7 (añade toastify, supabase) |
Desarrollo del CLI
git clone https://github.com/DarkSack/create-sackapp.git
cd create-sackapp
npm install
node index.js # probar localmentePublicar una versión nueva en npm:
npm version [patch|minor|major]
npm publishHecho con 💻 y ☕ por Sack.
