Cómo configurar un Stack con Laravel 7, Vue y Tailwind CSS

Diego Villaverde

Front developer

Jul 2020
Jul 14, 2020

Un Web Stackes una recopilación de utilidades que se usan en conjunto para la implementación de páginas web. 

Vamos a ver cómo configurar manualmente un entorno para desarrollar aplicaciones web partiendo de una instalación base limpia de Laravel 7 que hará las veces de Back-End. Posteriormente instalaremos Vue como framework JavaScript para el desarrollo Front-End y por último reemplazaremos Bootstrap por Tailwind CSS como framework CSS para el diseño de la interfaz.

La razón por la que he elegido estas utilidades son principalmente:

  • Laravel: Es un potente framework Back-End con el que ya estoy familiarizado y que realmente agiliza mucho el proceso de desarrollo, no es de extrañar que haya revolucionado el mundo del desarrollo de aplicaciones web en PHP.
  • Vue: Viene integrado con Laravel y ha ganado tracción rápidamente frente a su principal competidor React. Es muy potente y tiene una menor curva de aprendizaje frente a dicho competidor.
  • Tailwind CSS: Un framework CSS que ha ido ganando cada vez más fama por su versatilidad para diseñar interfaces muy distintas con un sistema de clases familiar para los acostumbrados a Bootstrap pero con un sistema “utility first” como él mismo se denomina.

Antes de empezar, recomiendo leer atentamente los requerimientos de la documentación de Laravel, ya que esta guía parte de una instalación base de este framework.

Creando el proyecto en Laravel

Lo primero que haremos será crear el proyecto con el comando que nos proporciona laravel:

En mi caso ya me encuentro en un directorio creado bajo el nombre ”tailwindcss-vue”


laravel new .

Si ponemos “.” laravel se instalará en el directorio actual en el que nos encontramos. Si en su lugar prefieres crear un directorio sustituye el “.” por “nombre-del-proyecto” y recuerda moverte dentro del directorio con cd nombre-del-proyecto.

Instalando Vue

Siguiendo las indicaciones de la documentación de Laravel descargamos el paquete de composer “laravel/ui” y procedemos a instalar toda la estructura de Vue integrada con Laravel. 


composer require laravel/ui

Este paquete de composer genera además un componente de ejemplo que usaremos más adelante para verificar que Vue está funcionando correctamente.

Instalamos todo el paquete Vue


php artisan ui vue

e instalamos las dependencias y compilamos el código


npm install && npm run dev.

Sustituyendo Bootstrap por Tailwind

Llegados a este punto si ejecutamos el comando:


php artisan serve

veremos una pantalla como la siguiente:

Páctalla inicial de Laravel

Ahora mismo tenemos un proyecto totalmente funcional de Laravel y Vue. Sin embargo, la vista que vemos, que se encuentra en el fichero “welcome.blade.php”, está utilizando Bootstrap para aplicar los estilos. Nuestro siguiente paso es instalar y aplicar Tailwind y eliminar todas las referencias a Bootstrap.

# Instalando y configurando Tailwind

Empezamos por instalar Tailwind mediante node.js


npm install tailwindcss

Eliminamos las referencias a bootstrap en el CSS y añadimos las de Tailwind. En el archivo “app.scss” sustituye:


// Fonts
@import url('https://fonts.googleapis.com/css?family=Nunito');
// Variables
@import 'variables';
// Bootstrap
@import '~bootstrap/scss/bootstrap';

Por:


// Tailwind CSS
@import "tailwindcss/base";
@import "tailwindcss/components";
@import "tailwindcss/utilities";

A continuación creamos el archivo de configuración de Tailwind CSS, este archivo nos permite personalizar el framework de diversas formas, por ejemplo añadiendo nuevas fuentes o añadiendo temas de colores nuevos, expandiendo los que nos proporciona el framework de una forma controlada y sistematizada:


npx tailwindcss init

El comando nos habrá creado un archivo “tailwind.config.js” en la raíz del proyecto. En la documentación de Tailwind podéis ampliar información acerca de este archivo.

Añadimos Tailwind a Laravel-mix. Para ello abrimos el archivo “webpack.mix.js” y sustituimos su contenido por lo siguiente:


const mix = require('laravel-mix');
const tailwindcss = require('tailwindcss');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css')
    .options({
        processCssUrls: false,
        postCss: [tailwindcss('./tailwind.config.js')],
    });

De esta manera ya tendríamos Tailwind instalado y configurado para empezar a usarlo.

# Borrando bootstrap

Por último solo nos queda eliminar todas las referencias restantes a Bootstrap en el código para que al compilarlo no provoque un error.

Primero, en el archivo “package.json” eliminamos las referencias a Bootstrap y sus dependencias (en blanco: Bootstrap, JQuery y Popper):

Dependencias package.json

Y en el archivo “bootstrap.js” (ruta resources/js/bootstrap.js) eliminamos el siguiente bloque try/catch:

Configuración archivo bootstrap.js

# Añadiendo la fuente Inter var

Para rematar todo este conjunto de utilidades, he decidido añadir la fuente que usa Tailwind en sus componentes, Inter Var. Se trata de una fuente variable y que es completamente gratuita y Open Source. Puedes encontrarla en su web o en Google Fonts.

Primero creamos un archivo llamado “style.scss” en la ruta “resources/sass/style.scss” con el siguiente contenido:


@import url('https://rsms.me/inter/inter.css');

html {
    font-family: 'Inter', sans-serif;
}

@supports (font-variation-settings: normal) {
    html { font-family: 'Inter var', sans-serif; }
}


Y lo importamos en el archivo “app.scss” en la misma ruta añadiendo en una nueva linea lo siguiente:


@import "style";

Viendo los resultados

Por último dejo un ejemplo para reemplazar el contenido de la vista “welcome.blade.php” con un layout hecho con Tailwind y que incluye el componente de prueba de Vue que integra Laravel para verificar que todo está funcionando correctamente.

# Ejemplo


<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">

   <title>Laravel</title>

   <link href="css/app.css" rel="stylesheet">
   <link rel="stylesheet" href="{{ mix('/css/app.css') }}">
</head>
<body>
<div id="app">
   <div class="flex flex-col justify-center min-h-screen py-12 bg-gray-50 sm:px-6 lg:px-8">

       <div class="flex items-center justify-center">
           <div class="flex flex-col justify-around">
               <div class="space-y-6">

                   <h1 class="text-5xl font-extrabold tracking-wider text-center text-gray-600">
                       {{ config('app.name') }}
                   </h1>

                   <ul class="list-reset">
                       <li class="inline px-4">
                           <a href="https://tailwindcss.com"
                              class="font-medium text-indigo-600 hover:text-indigo-500 focus:outline-none focus:underline transition ease-in-out duration-150">Tailwind
                               CSS</a>
                       </li>
                       <li class="inline px-4">
                           <a href="https://vuejs.org/"
                              class="font-medium text-indigo-600 hover:text-indigo-500 focus:outline-none focus:underline transition ease-in-out duration-150">Vue</a>
                       </li>
                       <li class="inline px-4">
                           <a href="https://laravel.com"
                              class="font-medium text-indigo-600 hover:text-indigo-500 focus:outline-none focus:underline transition ease-in-out duration-150">Laravel</a>
                       </li>
                   </ul>
                   <example-component></example-component>
               </div>
           </div>
       </div>
   </div>
</div>


<script src="{{ mix('js/app.js') }}"></script>
</body>
</html>

Ejecutamos npm install && npm run dev para recompilar el código sin las dependencias de Bootstrap y con las nuevas fuentes importadas

Podemos ver el resultado final escribiendo en el terminal php artisan serve y accediendo a http://127.0.0.1:8000.

Si todo ha ido bien deberías ver una pantalla como esta:

Pantalla configuración final Laravel

Podemos ver cómo debajo de los enlaces y el logo aparece el componente de prueba de Vue que trae Laravel, así como la fuente Inter Var cargada y los estilos de Tailwind aplicándose por lo que todo está funcionando correctamente.

¡Y eso es todo! Espero que te haya resultado de utilidad y que disfrutes creando aplicaciones con este potente stack de desarrollo.

También te puede interesar

Chat GPT y desarrollo web: ¿acabará con los developers?

Chat GPT y desarrollo web: ¿acabará con los developers?

En la era digital, donde nuestra existencia misma parece colgar del frágil hilo de la última actualización de software, surge una pregunta tan inquietante como el sonido de una notificación no leída: ¿Podrá Chat GPT, con su cerebro electrónico y su encantador ingenio...

Los lenguajes de programación más usados en 2024

Los lenguajes de programación más usados en 2024

A medida que avanzamos en esta década, la tecnología sigue siendo el motor de transformación en todos los sectores, incluyendo cómo interactuamos, consumimos y hacemos negocios en el entorno digital. Para las empresas y profesionales enfocados en la vanguardia...

Desafíos y Tendencias para los Diseñadores Gráficos en 2024

Desafíos y Tendencias para los Diseñadores Gráficos en 2024

El mundo del diseño gráfico está en constante evolución, impulsado por innovaciones tecnológicas y cambios en las preferencias de los consumidores. Este año, los diseñadores gráficos enfrentarán tanto nuevos desafíos como oportunidades. En Iberpixel, estamos en el...