Setup de SolidJS con Vite y TypeScript: Guía Paso a Paso con Comandos y Salidas Esperadas
Introducción
Si estás empezando con SolidJS, querés una pila moderna y rápida para el desarrollo frontend, probablemente hayas escuchado hablar de Vite y TypeScript. Juntos forman un trio perfecto: Vite provee un servidor de desarrollo ultrarrápido y empaquetado optimizado, SolidJS brinda un framework reactivo y ligero, y TypeScript añade tipado estático para hacer tu código más seguro y mantenible. En este artículo, vas a aprender exactamente cómo montar un proyecto SolidJS desde cero usando Vite y TypeScript, ejecutar los comandos necesarios y entender qué salida podés esperar en cada paso.
El artículo está pensado tanto para principiantes como para desarrolladores que ya usan frameworks similares (React, Vue, Angular). Si ya conocés la terminal, un poco de npm o yarn, y sabes cómo navegar en un repo, vas a poder seguir sin problemas. Al final, vas a tener un skeleton funcional de una aplicación SolidJS listo para que le agregues tus componentes, estilos y lógica de negocio.
Requerimientos Previos
Antes de empezar, hay un par de cosas que necesitás en tu máquina:
- Node.js ≥ 18 (para correr Vite y npm scripts).
- npm o yarn (prefiero yarn si lo tenés instalado, pero los pasos funcionan igual con npm).
- Un editor de código (VS Code, Polacode, o cualquier otro).
- Conocimientos básicos del terminal (cómo listar directorios, crear carpetas, correr comandos).
Puedes chequear tus versiones así:
node -v
npm -v
# o
yarn --versionSi algún comando falla o las versiones son muy bajas, instalá la versión más reciente desde nodejs.org o usá tu gestor de versionado preferido.
Crear un Nuevo Proyecto con Vite
Vite viene con un asistente de creación de templates que puede generar un montón de proyectos preconfigurados. Para SolidJS, usás el siguiente comando:
npm create solid@latestO equivalentemente con yarn:
yarn create solid@latestCuando corrés este comando, Vite va a preguntarte unas pocas cosas mediante prompts interactivos:
- Nombre del proyecto: elegí algo descriptivo, por ejemplo
mi-app-solid. - ¿Querés usar TypeScript? (responde
y). - ¿Querés usar el estilo
jsxotsx? (SolidJS usatsx). - ¿Querés instalar los paquetes de Tailwind CSS? (opcional, podés decir
n). - ¿Querés inicializar un
gitrepository? (normalmentey).
La salida que verás en pantalla se verá más o menos así (he acortado algunas líneas):
Scaffolding project in /Users/tuusuario/mi-app-solid...
✅ Templates installed
✅ Package.json creado
✅ .eslintrc.cjs creado
✅ src/components/HelloWorld.tsx creado
✅ src/main.tsx creado
✅ src/App.tsx creado
Ejecutando `npm install`...
added 23 packages, actualizado 5 packages, eliminado 1 package
Guardando la lista de nodos
✨ Listo! Para empezar a desarrollar, ejecutá:
cd mi-app-solid
npm run devComo podés ver, Vite ya instaló las dependencias, creó un archivo package.json, y generó la estructura básica. El asistente también agregó TypeScript automáticamente y creó unos cuantos componentes de ejemplo.
Navegando la Estructura del Proyecto
Una vez dentro del nuevo directorio (cd mi-app-solid), listás los archivos así:
ls -laResultado esperado (parcial):
app.tsx node_modules/ package.json public/ src/Dentro de src/ tenés:
components/ assets/ env.d.ts main.tsx App.tsx styles.cssmain.tsx: El punto de entrada donde se renderiza la app en el DOM.App.tsx: El componente raíz que contiene la lógica principal.components/HelloWorld.tsx: Un componente de ejemplo mínimo.styles.css: Archivo de estilos global (puedes renombrarlo astyles.tssi usás CSS-modules).assets/: Carpeta para imágenes, fuentes, etc.
El archivo package.json ya tiene los scripts necesarios:
{
"name": "mi-app-solid",
"version": "0.0.0",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview"
},
"dependencies": {
"solid-js": "^1.7.11",
"vite": "^4.3.9"
},
"devDependencies": {
"typescript": "^5.0.4",
"@vitejs/plugin-solid": "^0.0.0-placeholder",
"@types/node": "^20.2.5"
}
}El archivo tsconfig.json también viene preconfigurado; podés editarlo si necesitás ajustes personalizados.
Correr el Desarrollo Local
Con todo instalado, podés iniciar el servidor de desarrollo con:
npm run devO con yarn:
yarn devEl servidor de Vite va a arrancar en http://localhost:5173. Verás algo como esto:
> Vite 4.3.9 ready in development
> Listening on http://localhost:5173
> Check out http://localhost:5173/Ahora abrí tu navegador y navegá a esa URL. Deberías ver la interfaz predeterminada de SolidJS (un título "¡Hola, mundo!" y un contador) funcionando con recarga rápida en cada cambio.
Un Script Rápido en TypeScript
Para probar el flujo TypeScript → JavaScript, podés crear un pequeño componente o script que solo imprima algo en consola. El playground de este artículo te permite probar código TypeScript directamente:
const greeting: string = "Hola desde TypeScript con SolidJS!";
console.log(greeting);Al ejecutar este bloque, verás la salida:
Hola desde TypeScript con SolidJS!Esto confirma que TypeScript se está transfiriendo correctamente y que el lenguaje tipado funciona en el contexto del proyecto.
Agregar Componentes y Rutas
El esqueleto de SolidJS ya incluye un componente HelloWorld. Podés usar este como punto de partida para crear componentes propios:
// src/components/HelloWorld.tsx
import { Show } from "solid-js/web";
interface Props {
name: string;
}
export default function HelloWorld(props: Props) {
return (
<div class="hello-world">
<h1>¡Hola, {props.name}!</h1>
<Show when={props.name.length > 0}>
<p>El nombre tiene {props.name.length} caracteres.</p>
</Show>
</div>
);
}Importalo en App.tsx y usalo:
// src/App.tsx
import { Component } from "solid-js";
import HelloWorld from "./components/HelloWorld.tsx";
const App: Component = () => {
const user = { name: "Solidista" };
return (
<main class="container">
<HelloWorld name={user.name} />
</main>
);
};
export default App;Ahora el contador de ejemplo ya está integrado. Podés ampliar la app con más componentes, gestión de estado (createSignal, createStore) y lógica de rutas si necesitás navegación.
Construir para Producción
Cuando tu app esté lista para ser desplegada, ejecutá:
npm run buildVite va a ejecutar tsc (compilador TypeScript) y luego vite build. La salida esperada es similar a:
>>> Compilando con TypeScript
src/main.tsx
src/App.tsx
src/components/HelloWorld.tsx
>>> Construyendo con Vite
vite v4.3.9: empezando...
vite v4.3.9: ¡dist se ha generado exitosamente!Tras la compilación, una carpeta dist/ aparece con archivos estáticos optimizados:
ls -la distResulta en algo como:
index.html assets/ static/ ... (archivos .js y .css)Ahora podés servir la carpeta dist/ con cualquier servidor web estático (nginx, Apache, Netlify, Vercel). Para una vista previa local, usá:
npm run previewY seguí las instrucciones en pantalla.
Errores Comunes y Soluciones Rápidas
1. "Could not find '@vitejs/plugin-solid'"
A menudo ocurre cuando la instalación se interrumpe. Borrá node_modules y package-lock.json (o yarn.lock) y volvé a instalar:
rm -rf node_modules
yarn install # o npm install2. "src/main.tsx:1:1: TS2691: El archivo no se encuentra o está fuera del directorio de salida del proyecto"
Significa que tsc no puede encontrar los archivos de entrada, usualmente porque tsconfig.json tiene un rootDir equivocado. Verificá el tsconfig.json base:
{
"compilerOptions": {
"target": "ES2020",
"lib": ["DOM", "DOM.Iterable", "ES2020"],
"types": ["typescript", "vite/client"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"declaration": false,
"noEmitOnError": false,
"jsx": "preserve",
"outDir": "dist"
},
"include": ["src"],
"exclude": ["node_modules"]
}Siempre que src contenga los archivos fuente, estás bien.
3. Recarga en Desarrollo No Funciona
Si el servidor de Vite no actualiza la página cuando editás un componente, aseguráte de que el servidor está corriendo con npm run dev. Reiniciá el proceso si está atascado. También aseguráte de que vite está en el PATH correctamente.
4. La Construcción Falla por Tipado Incorrecto
Ejecutá npm run build una vez, observá el error, y corregilo. Usar strict en TypeScript ayuda a atrapar errores rápidamente.
Buenas Prácticas
- Convenciones de Nombres: Usá camelCase para nombres de variables y funciones, PascalCase para componentes.
- Organización de Componentes: Agrupá componentes relacionados en subcarpetas bajo
src/components/(por ejemplo,components/ui/,components/features/, etc.). - Manejo de Estado: Para apps pequeñas,
createSignales suficiente. Para estados más complejos, considerácreateStorede solid-js/store o Redux. - Estilizado: SolidJS funciona bien con CSS estándar, CSS Modules (
.module.css), o frameworks como Tailwind CSS. Podés instalar@tailwindcss/formsy configurarpostcss.config.js. - Linter y Formatter: El esqueleto incluye ESLint y Prettier. Corré
npm run lintynpm run formatregularmente. - Variables de Entorno: Usá el archivo
.envpara variables de desarrollo, y aseguráte de que.envno está en.gitignoresi necesitás cargarlos en el build. - Separación de concerns: Mantené los componentes delgados, mové lógica de negocio a utilidades o stores.
- Versionado: Usá un buen flujo de git. El asistente ya inicializa un repo, pero podés cambiar el
mainbranch amastersi eso se alinea con tu equipo.
Conclusión
Configurar un proyecto SolidJS con Vite y TypeScript hoy es cuestión de unos pocos comandos. Seguí esta guía, y ahora tenés un skeleton funcional de una aplicación de una sola página con tipado, recarga rápida y builds optimizados para producción. Recordá que el verdadero poder de SolidJS emerge cuando empezás a crear componentes reutilizables, manejas el estado eficientemente, y usas las herramientas de la comunidad (stores, routing, etc.).
Ahora podés centrarte en construir tu aplicación: agregá rutas, paginas dinámicas, integra APIs, y desplegá en un servicio en la nube. La base ya está lista y optimizada para escalar.
¡Feliz desarrollo con SolidJS, Vite y TypeScript!
Próximos Pasos
- Explora solid-js/router para navegación basada en rutas.
- Considerá solid-js/store para gestión de estado centralizada.
- Integrá Tailwind CSS o Styled Components para diseño.
- Desplegá tu app en plataformas como Netlify, Vercel o GitHub Pages.
- Aprende a usar Solid Start si necesitás un framework full-stack con SSR.
Con estos conocimientos, podés abordar cualquier proyecto frontend con confianza y velocidad.
DUGLAS MORENO
Comentarios (0)
Sé el primero en comentar.