Laravel Mix con node_modules en symlink

Laravel Mix con node_modules en symlink

Deploy de proyecto Laravel y Mix con Ansistrano

Esta semana para agilizar el deploy de un proyecto Laravel con ansistrano, hemos decidido mover las carpetas vendor y node_modules a la carpeta shared para compartirla entre releases y no tener que instalar todos los paquetes PHP y javascript cada deploy.

Al hacerlo la ejecucion de npm, npm run prod, no ejecutaba las tareas en el fichero webpack.mix.js donde están las tareas de Laravel Mix a ejecutar.

Solución

Buscando información encontramos algunos posts en Laracasts y cogiendo algunas ideas dimos con la solución.

El problema es simplemente que con un enlace simbólico Laravel Mix no encuentra el fichero de configuración de tareas (webpack.mix.js). Podemos solucionarlo con estos pequeños cambios:

Crear fichero webpack.config.js

Primero creamos un fichero webpack.config.js en la raiz del proyecto. En este asignaremos el directorio de trabajo de webpack y después cargaremos el fichero de configuración habitual. Este se encuentra dentro de la carpeta laravel-mix en vendor.

let Mix = require('laravel-mix').config;
Mix.Paths.setRootPath(path.resolve(__dirname));

module.exports = require('laravel-mix/setup/webpack.config.js');

Cargar el fichero creado en la tarea de producción

Después modificaremos la linea del script de producción en el fichero package.json para que coja la configuración del fichero que acabamos de crear:

"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=webpack.config.js"

De esta manera primero asignará el directorio de trabajo correcto y después realizará las tareas encontrando el fichero de configuración de tareas.

Finalmente, con este cambio los paquetes se comparten entre releases y el proyecto se despliega en menos de la mitad de tiempo.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies