🎨 Laravel Mix y gestión de assets
Compila, optimiza y organiza tus CSS y JavaScript con facilidad
Laravel Mix es una capa sobre webpack que simplifica la compilación y el manejo de assets (CSS, SASS, JS, imágenes). Con pocos comandos puedes transformar, concatenar, versionar y optimizar tus archivos para desarrollo y producción.
En esta entrada veremos la configuración básica, ejemplos reales (SASS → CSS, ES6 → ES5), versionado para cache-busting, y cómo integrar Mix con Laravel (y con Blade) paso a paso.
🔧 Requisitos previos
- Tener Node.js (v12+) y npm o Yarn instalados.
 - Un proyecto Laravel ya creado (con 
package.jsoninicial). - Conocimientos básicos de NPM scripts y archivos frontend.
 
package.json (fragmento)
        
      {
  "private": true,
  "scripts": {
    "dev": "npm run development",
    "development": "mix",
    "watch": "mix watch",
    "hot": "mix watch --hot",
    "prod": "npm run production",
    "production": "mix --production"
  },
  "devDependencies": {
    "laravel-mix": "^6.0.0",
    "sass": "^1.32.0",
    "sass-loader": "^10.1.1"
  }
}
    ⚙️ Archivo webpack.mix.js
    
      En la raíz del proyecto encontrarás (o crearás) webpack.mix.js. Aquí defines las tareas que Laravel Mix ejecutará.
    
webpack.mix.js
        
      const mix = require('laravel-mix');
/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix simplifies Webpack configuration for common tasks like compiling
 | SASS, bundling JS, versioning, copying assets and more.
 |
 */
mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css')
   .sourceMaps();
if (mix.inProduction()) {
  mix.version();
}
    
      Este ejemplo compila resources/js/app.js a public/js/app.js y SASS a CSS.
      Además, en producción aplica versionado para cache-busting.
    
📁 Estructura típica de assets
resources/js/app.js→ punto de entrada JS (imports, Vue/React, etc.)resources/sass/app.scss→ variables y estilos principales (SASS)public/js/ypublic/css/→ archivos compilados para servirwebpack.mix.js→ configuración de Mix
resources/js/app.js (ejemplo)
        
      // resources/js/app.js
import './bootstrap'; // file with axios, CSRF setup
import '../sass/app.scss';
console.log('App JS cargado');
// Ejemplo ES6
const saludo = (nombre = 'Alumno') => `¡Hola ${nombre}!`;
console.log(saludo('María'));
    🎨 SASS: variables y uso
Ejemplo simple de resources/sass/app.scss con variables y mixins:
resources/sass/app.scss
        
      // variables
$primary-color: #2b6cb0;
$radius: 6px;
body {
  font-family: Arial, sans-serif;
  background: #f8fafc;
  color: #1a202c;
}
.btn-custom {
  background: $primary-color;
  color: #fff;
  border-radius: $radius;
  padding: 0.5rem 1rem;
}
    Al compilar, estos SASS se convertirán a CSS compatible con todos los navegadores (según tu configuración).
📦 Comandos comunes
npm install→ instala dependencias.npm run dev→ compila para desarrollo (source maps).npm run watch→ recompila automáticamente al guardar archivos.npm run prod→ compila y optimiza para producción (minificación + version).
npm install npm run dev npm run watch npm run prod
🔁 Versionado (Cache-busting)
      En producción conviene versionar los assets para forzar al navegador a cargar la versión nueva.
      Mix ofrece mix.version() que genera nombres como app.css?id=abcd1234 o crea la carpeta mix-manifest.json.
    
En Blade
        
      <!-- resources/views/layouts/app.blade.php -->
<link rel="stylesheet" href="{{ mix('css/app.css') }}">
<script src="{{ mix('js/app.js') }}" defer></script>
    📂 Copiar activos estáticos
      Mix también puede copiar carpetas completas (imágenes, fuentes) a public/:
    
mix.copyDirectory('resources/images', 'public/images');
mix.copyDirectory('resources/fonts', 'public/fonts');
    🧪 Simulador visual: cómo se incluyen los assets
Selecciona si estás en desarrollo o producción y verás el enlace que deberías usar en Blade.
🛠️ Problemas comunes y soluciones
- No se ven los cambios: ejecuta 
npm run devonpm run watch. - Error de compilación: revisa la versión de Node y dependencias, elimina 
node_modulesy reinstala. - mix-manifest.json no coincide: limpia la caché del navegador o ejecuta 
npm run prodpara regenear los archivos. - Problemas con SASS: asegura tener 
sassysass-loaderendevDependencies. 
✅ Buenas prácticas
- Usa 
npm run watchen desarrollo para recompilación automática. - Versiona assets en producción (
mix.version()). - Separa lógica JS y CSS por componentes para mantener orden.
 - Usa 
mix.copyDirectorypara mantener imágenes y fuentes accesibles. - Revisa 
mix.options({ processCssUrls: false })si tienes problemas con rutas en CSS. 
  
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias