馃帹 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