Tailwind CSS: Build y Deploy — PWA Lista para Producción
URL: https://ruvebal.github.io/web-atelier-udit/lessons/es/tailwind/build-deploy/
📋 Tabla de contenidos
- 🎭 Enfoque de Codificación Crítica
- Requisitos
- 🚀 Builds de Producción: De Desarrollo a Despliegue
- S6 — Build y Deploy (Producción, PWA, GitHub Pages)
- Build y Deploy
- 🎓 Explicaciones Pedagógicas
- Preguntas Críticas del Atelier
- Preguntas Críticas
- 🏗️ Scaffold Mínimo de Repositorio
- Referencias
Tailwind CSS: Build y Deploy — PWA Lista para Producción
Divulgación de asistencia IA: Esta lección se basa en experiencia docente desde septiembre 2024, con iteraciones de IA siguiendo ciclos investigación–práctica–investigación.
🎭 Enfoque de Codificación Crítica
Esta lección sigue la metodología del atelier (exploración → reflexión → conceptualización → producción → exhibición). Construimos no para automatizar, sino para articular — dar forma al pensamiento mediante ritmo, reflexión y resistencia.
- Exploración: Comprensión de procesos de build y estrategias de despliegue.
- Reflexión: Consideración de cómo el despliegue afecta experiencia de usuario y accesibilidad.
- Conceptualización: Conexión de optimización de build con sostenibilidad y ética.
- Producción: Creación de aplicaciones listas para producción con características PWA.
- Exhibición: Demostración de aplicaciones web pulidas y desplegables.
Requisitos
📚 Antes de comenzar
- S1–S5 completadas: SPA Tailwind completa con componentes, estado y optimizaciones
- Herramientas de build: Comprensión de scripts npm y bundling
- Git y GitHub: Gestión de repositorios y configuración de GitHub Pages
- Hosting estático: Experiencia con plataformas de despliegue
🚀 Builds de Producción: De Desarrollo a Despliegue
Los builds de producción transforman código de desarrollo en aplicaciones optimizadas y desplegables. Las diferencias clave incluyen:
- Optimización de bundle: Minificación, tree-shaking y optimización de assets
- Variables de entorno: Configuraciones diferentes para dev vs. producción
- Manejo de assets: Nombres con hash, optimización CDN, carga lazy
- Monitoreo de rendimiento: Configuración de analytics y rastreo de errores
Nuestro enfoque crea PWAs listas para producción que pueden instalarse, funcionar offline y proporcionar experiencias app-like nativas.
S6 — Build y Deploy (Producción, PWA, GitHub Pages)
Esta sesión se enfoca en construir bundles de producción optimizados y desplegar en plataformas de hosting estático.
Implementación paso a paso
-
Configura Vite para producción:
// vite.config.js import { defineConfig } from 'vite'; export default defineConfig({ base: process.env.NODE_ENV === 'production' ? '/nombre-de-tu-repo/' : '/', build: { outDir: 'dist', assetsDir: 'assets', sourcemap: false, // Deshabilitar para producción minify: 'terser', rollupOptions: { output: { manualChunks: { vendor: ['react', 'react-dom'], // Si usas React }, }, }, }, }); -
Añade manifest PWA:
<!-- public/manifest.json --> { "name": "Portafolio Tailwind", "short_name": "Portafolio", "description": "Portafolio moderno construido con Tailwind CSS y Vite", "start_url": "/", "display": "standalone", "background_color": "#ffffff", "theme_color": "#3b82f6", "icons": [ { "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png" } ] } -
Añade enlace de manifest a HTML:
<!-- index.html --> <link rel="manifest" href="/manifest.json" /> <meta name="theme-color" content="#3b82f6" /> -
Construye para producción:
npm run build -
Verifica build de producción:
# Sirve carpeta dist localmente para testing npx serve dist # Comprueba que todos los assets carguen correctamente # Verifica que aparezca el prompt de instalación PWA # Prueba funcionalidad offline -
Configura GitHub Pages:
- Ve a configuración del repositorio → Pages
- Selecciona “GitHub Actions” como fuente
- Crea
.github/workflows/deploy.yml
-
Crea workflow de despliegue:
# .github/workflows/deploy.yml name: Deploy to GitHub Pages on: push: branches: [main] workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: 'pages' cancel-in-progress: false jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Build run: npm run build - name: Setup Pages uses: actions/configure-pages@v4 - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: './dist' deploy: environment: name: github-pages url: $ runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 -
Añade documentación de despliegue:
<!-- README.md --> # Portafolio Tailwind Portafolio moderno construido con Tailwind CSS, Vite y JavaScript vanilla. ## Desarrollo ```bash npm install npm run dev ```Build y Deploy
npm run buildEl sitio se despliega automáticamente a GitHub Pages vía GitHub Actions.
-
Prueba características PWA:
- Instala la app desde el navegador
- Prueba funcionalidad offline
- Verifica registro de service worker
- Comprueba propiedades del manifest de la app
-
Haz commit de tu aplicación lista para producción:
git add . git commit -m "feat: S6 - Build de producción + características PWA + despliegue en GitHub Pages"
🎓 Explicaciones Pedagógicas
Optimización de Build de Producción
El proceso de build de Vite transforma código de desarrollo en assets listos para producción:
Análisis de bundle:
- Tree shaking: Remueve código no utilizado
- Code splitting: Divide código en chunks más pequeños para carga más rápida
- Optimización de assets: Comprime y añade hash a archivos para caché
Características PWA:
- Service workers: Habilitan funcionalidad offline y sincronización en segundo plano
- Web app manifest: Define cómo aparece la app cuando se instala
- Estrategias de caché: Mejoran rendimiento y experiencia offline
Consideraciones de Despliegue
El hosting estático proporciona distribución CDN global pero requiere configuraciones específicas:
Específicos de GitHub Pages:
- Ruta base: Debe coincidir con nombre de repositorio para despliegue en subruta
- HTTPS: Requerido para características PWA y APIs web modernas
- Dominios personalizados: Se pueden configurar para uso en producción
Monitoreo de rendimiento:
- Core Web Vitals: Rastreo de métricas de rendimiento real
- Rastreo de errores: Monitoreo de errores JavaScript e interacciones de usuario
- Analytics: Comprensión de comportamiento de usuario y métricas de conversión
Preguntas Críticas del Atelier
Siguiendo nuestra metodología del atelier, reflexiona sobre estas preguntas:
Exploración
- ¿Qué cambió más significativamente entre tus builds de desarrollo y producción?
- ¿Cómo reveló el proceso de despliegue problemas previamente no notados?
Reflexión
- ¿Cómo afecta tu historia de despliegue y elección de hosting a usuarios finales?
- ¿Qué compromisos de rendimiento hiciste para optimización de producción?
Conceptualización
- ¿Qué hace que un proyecto esté “listo” para mostrar a otros versus “listo” para usuarios?
- ¿Cómo se relaciona el proceso de build con sostenibilidad y mantenimiento de software?
Producción
- ¿Es tu README claro y comprehensivo para colaboradores y mantenedores futuros?
- ¿Qué tan mantenible es tu configuración de build y despliegue?
Exhibición
- ¿Qué narrativa presentarás con tu sitio desplegado en vivo?
- ¿Cómo invitarás crítica y demostrarás la evolución de S1 a S6?
Preguntas Críticas
Preguntas de Reflexión
- ¿Cómo cambia el proceso de build de Tailwind tu enfoque hacia código de producción?
- ¿Cuál es la relación entre experiencia de desarrollo y realidad de producción?
- ¿Cómo puede la codificación crítica moldear nuestra comprensión de despliegue y distribución de software?
- ¿Cómo representa tu aplicación desplegada tu trayectoria como desarrollador?
Preguntas de Ética
- ¿Cuál infraestructura y labor habilitan el despliegue y hosting de tu aplicación?
- ¿Cómo afectan tus optimizaciones de build a usuarios con diferentes dispositivos y conexiones?
- ¿Qué ocurre cuando requisitos de despliegue chocan con necesidades de accesibilidad o rendimiento?
Preguntas de Filosofía Técnica
- ¿Es la “optimización de build” más sobre rendimiento o sobre experiencia de desarrollador?
- ¿Cómo se relaciona el proceso build-deploy con conceptos como builds reproducibles?
- ¿Qué significa “desplegar responsablemente” en términos de impacto ambiental y social?
🏗️ Scaffold Mínimo de Repositorio
Aquí tienes un punto de partida completo para tu aplicación lista para producción:
portafolio-produccion/
├── index.html
├── public/
│ ├── manifest.json
│ └── icons/
│ ├── icon-192.png
│ └── icon-512.png
├── src/
│ ├── main.js
│ ├── style.css
│ └── components/
└── .github/
└── workflows/
└── deploy.yml
public/manifest.json:
{
"name": "Portafolio Tailwind",
"short_name": "Portafolio",
"description": "Portafolio moderno construido con Tailwind CSS y Vite",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#3b82f6",
"icons": [
{
"src": "/icons/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icons/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
vite.config.js:
import { defineConfig } from 'vite';
export default defineConfig({
base: process.env.NODE_ENV === 'production' ? '/nombre-de-tu-repo/' : '/',
build: {
outDir: 'dist',
assetsDir: 'assets',
sourcemap: false,
minify: 'terser',
},
});
.github/workflows/deploy.yml:
name: Deploy to GitHub Pages
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './dist'
deploy:
environment:
name: github-pages
url: $
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
Referencias
¡Felicitaciones! Has completado la hoja de ruta completa de Tailwind CSS. Tu portafolio es ahora una PWA lista para producción desplegada en la web. 🎉