Yo siempre he usado lo que se conoce como Vanilla CSS

El otro día le pedí a Claude una web estilo CV y algo “webflowish” y me dio el diseño que actualmente tengo.

Claude me la hizo con Tailwind y como me gusto el diseño, decidí entender mas sobre TailWind.

Lo primero que entendí es que no podía usar toda la librería para producción ya que resultaría muy pesado.

Entonces llego el turno de crear un mu-plugin para que se encargase del proceso de crear un archivo con solo aquello de Tailwind que el sitio necesitaba.


Estructura

Esta fue la estructura:

/wp-content/mu-plugins/
  tailwind-handler/
    tailwind.php       # Main plugin file
    package.json               # npm dependencies
    tailwind.config.js         # Tailwind configuration
    postcss.config.js          # PostCSS configuration
    src/
      input.css                # Source Tailwind file
    dist/
      tailwind.min.css         # Compiled output (gitignored)
    node_modules/              # gitignored

Y estos fueron el contenido para dichos archivos


package.json:

{
  "name": "tailwind-handler",
  "version": "1.0.0",
  "description": "Tailwind CSS build system for WordPress",
  "scripts": {
    "build": "tailwindcss -i ./src/input.css -o ./dist/tailwind.min.css --minify",
    "watch": "tailwindcss -i ./src/input.css -o ./dist/tailwind.min.css --watch"
  },
  "devDependencies": {
    "tailwindcss": "^3.4.0"
  }
}

tailwind.config.js:

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    '../../themes/**/*.php',
    '../../themes/**/*.html',
    '../../themes/**/*.js',
  ],
  theme: {
    extend: {
      // Add your custom theme extensions here
    },
  },
  plugins: [],
}

postcss.config.js:

module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
}
src/input.css:
@tailwind base;
@tailwind components;
@tailwind utilities;
/* Add any custom CSS here */
**.gitignore:**
node_modules/
dist/
*.log

Después de eso fui a la carpeta por medio de la terminal

  cd wp-content/mu-plugins/tailwind
   npm install

Resultado

Ahora lo que debía hacer era ir al folder y ejecutar esto cada vez que hacia cambios de estilo en el sitio

npm run build

La idea era que el plugin lo hiciera, sin embargo esto no fue posible inicialmente debido a que estaba trabajando en un contenedor de Podman y no tenia Node Package Manager instalado.

Después de reconstruir el CSS de manera manual, tenia que ir al escritorio de WordPress y mover el archivo de TailWind a un folder en la raíz del sitio que se llama “Assets”

Después agregué manualmente el enlace en la cabecera (header) del sitio.

<link rel="stylesheet" href="<?php echo site_url('/assets/files/tailwind.min.css'); ?>" type="text/css" media="all" />

Recrear un “build” y mover ese ‘build” a un folder es algo tedioso.


Mi Amigo Claude

Mi amigo Claude me dijo que si quería dejar de estar en eso, que podía instalar NPM en el contenedor y problema resuelto

# Access the container
podman exec -it tlb_wordpress_site bash
# Inside the container, check the OS
cat /etc/os-release
# Install Node.js and npm (WordPress image is based on Debian)
apt-get update
apt-get install -y nodejs npm
# Verify installation
which npm
npm --version
# Exit container
exit

Mu-Plugin: Tailwind para WordPress

Este mu-plugin sufrió algunos cambios desde el inicio, pero esta es la versión actual

Puedes ver el resultado final en este enlace