Usar Bulma con Next.js

Escrito por una persona el y actualizado el

Para un proyecto muy sencillo al que ando dando vueltas me he planteado usar Next.js y Bulma, como excusa para aprender un poquito de ambos. Aquí dejo anotado los pasos que he hecho para tener el entorno de desarrollo montado.

Empezaremos iniciando una aplicación Next.js, en este caso con soporte de Typescript:

yarn create next-app --typescript

También se puede hacer lo mismo sin Typescript. En ese caso quita el parámetro –typescript y en el resto de esta anotación dónde veas archivos .tsx, cámbialo por .js:

Seguidamente instalamos Bulma:

yarn add bulma

Ahora toca decidir si queremos utilizar los estilos de Bulma y hacer los ajustes que necesitemos mediante nuestra propia hoja de estilos o vamos un paso más allá y queremos poder modificar los estilos de Bulma mediante la modificación de sus propiedades gracias a sass.

Opción 1: Usar Bulma y nuestra hoja de estilos

En el archivo pages/_app.tsx añadir:

import 'bulma/css/bulma.css'

Con esto estamos usando la hoja de estilos de Bulma que hay en el directorio node_modules (Next.js se encarga de saber que ha de buscarlo allí). También podemos importar la versión comprimida en formato min, bulma.min.css o la versión rtl, bulma-rtl.

Ahora ya podemos usar las clases css de Bulma, por ejemplo añadiendo en pages/index.tsx:

return (
  ...

  <button className="button is-primary">Primary</button>

  ...
)

Opción 1.1: Usar Bulma desde un CDN y nuestra hoja de estilos

Si no queremos usar Bulma desde node_modules podemos usar un CDN. En ese caso podemos importar Bulma en el head del html. En el archivo pages/index.tsx:

const Home: NextPage = () => {
  return (
    ...
      <Head>
        <title>Create Next App</title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
      </Head>
    ...

O importar Bulma desde nuestra hoja de estilos. En el archivo styles/styles.css:

@import "https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css";

Opción 2: Usar Bulma, adaptarla mediante propiedades y aplicar nuestra hoja de estilos

Primero hemos de instalar sass:

yarn add sass

Añadir al archivo _app.tsx:

import '../styles/globals.scss'
import '../styles/styles.scss'

Seguidamente renombrar styles/globals.css por styles/globals.scss y styles/styles.css por styles/styles.scss.

Eliminar el contenido de styles/globals.scss y añadir:

$primary: #900; // Aquí se sobreescriben todas las variables que se quieran

@import 'bulma/bulma.sass';

En styles/styles.scss añadir:

@import 'globals.scss'

html {} // Añadir los estilos que se quieran