Migración
Esta guía cubre la migración de Spartan 2.x (TailwindCSS 3) a Spartan 3.x (TailwindCSS 4). La migración implica pasar del sistema de plugins en JavaScript a una configuración íntegramente basada en CSS.
Prerequisitos
- Node.js
20.19o superior - NPM
^10 - Un proyecto existente que use Spartan 2.x
Pasos de migración
Remover el plugin de Spartan
En tu tailwind.config.js, elimina la ruta de contenido de Spartan y su plugin:
module.exports = {
content: [
'./src/**/*.{vue,js,ts,jsx,tsx}',
- 'node_modules/@placetopay/spartan-vue/dist/**/*.js',
],
plugins: [
- require('@placetopay/spartan-vue/plugin'),
],
}
Ejecutar la herramienta de actualización de TailwindCSS
Usa la herramienta oficial de migración de TailwindCSS para actualizar tu proyecto automáticamente:
npx @tailwindcss/upgrade
pnpm dlx @tailwindcss/upgrade
yarn dlx @tailwindcss/upgrade
Esta herramienta se encarga automáticamente de:
- Migrar tu
tailwind.config.jsa configuración basada en CSS - Actualizar las clases de utilidades que cambiaron
- Identificar incompatibilidades
Remover la configuración de PostCSS (si la usas)
Si estabas usando PostCSS con TailwindCSS 3, elimina el archivo de configuración y las dependencias:
rm postcss.config.js
{
"devDependencies": {
- "@tailwindcss/postcss": "^4.1.18",
- "postcss": "^8.4.33",
}
}
Instalar el plugin de Vite de TailwindCSS (si usas Vite)
Si tu proyecto usa Vite, instala el plugin oficial de TailwindCSS para Vite:
npm install -D @tailwindcss/vite
pnpm add -D @tailwindcss/vite
yarn add --dev @tailwindcss/vite
Y agrégalo a tu configuración de Vite:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [
vue(),
tailwindcss(),
],
})
Actualizar Spartan a 3.x
Instala la última versión de Spartan:
npm install @placetopay/spartan-vue@latest
pnpm add @placetopay/spartan-vue@latest
yarn add @placetopay/spartan-vue@latest
Actualizar los imports de estilos
Hay dos cambios en cómo se importan los estilos. Primero, remove el import de CSS que tenías en tu entry point:
- import '@placetopay/spartan-vue/style.css'
import { createApp } from 'vue'
import App from './App.vue'
Luego, agrega el import de Spartan en tu archivo de estilos CSS principal:
@import "@placetopay/spartan-vue/styles.css";
@source '../src/**/*.{vue,js,ts,jsx,tsx}';
E importa ese archivo de estilos desde tu entry point:
import './styles.css'
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
Actualizar imports de colores de Tailwind (si los usas)
TailwindCSS 4 cambió la forma de exportar colores. Si importabas colores de Tailwind en archivos JS/TS:
- // Tailwind 3 (ya no funciona)
- import { red, blue } from 'tailwindcss/colors'
+ // Tailwind 4
+ import colors from 'tailwindcss/colors'
+
+ const red = colors.red
+ const blue = colors.blue
Verificar y testear
Realiza un build y levanta el servidor de desarrollo para validar que todo funciona:
npm run build
npm run dev
Revisa visualmente tu aplicación para asegurarte de que todos los estilos se aplican correctamente.
Breaking changes
TailwindCSS 4
- Configuración: Ahora se hace desde CSS con
@theme,@plugin, entre otros, en lugar detailwind.config.js - Dark mode: Se configura mediante
@custom-varianten CSS - Fuentes de contenido: Se usa la directiva
@sourceen CSS en lugar del arraycontenten el archivo de configuración - Utilidad
ring:ring-3ya no es válido, usarringcon ancho personalizado si es necesario
Spartan 3.x
- Sin plugin de JavaScript: Toda la configuración se hace desde CSS
- Imports simplificados: Un solo
@importdestyles.cssincluye todo - Peer dependencies actualizados: Requiere TailwindCSS 4.x
Color primario personalizado
Si en Spartan 2.x personalizabas el color primario mediante el plugin, necesitas migrar esa configuración a variables CSS:
- // tailwind.config.js (Spartan 2.x)
- plugins: [
- require('@placetopay/spartan-vue/plugin')({
- primary: {
- 50: '228 242 253',
- 500: '33 150 243',
- // ...
- }
- })
- ]
+ /* styles.css (Spartan 3.x) */
+ @import "@placetopay/spartan-vue/styles.css";
+
+ @source '../src/**/*.{vue,js,ts,jsx,tsx}';
+
+ @theme {
+ --color-spartan-primary-50: rgb(228 242 253);
+ --color-spartan-primary-100: rgb(187 222 251);
+ --color-spartan-primary-200: rgb(144 202 249);
+ --color-spartan-primary-300: rgb(100 181 246);
+ --color-spartan-primary-400: rgb(66 165 245);
+ --color-spartan-primary-500: rgb(33 150 243);
+ --color-spartan-primary-600: rgb(30 132 229);
+ --color-spartan-primary-700: rgb(25 103 196);
+ --color-spartan-primary-800: rgb(21 78 148);
+ --color-spartan-primary-900: rgb(13 42 84);
+ }