A cél: egy Hugo-projektben álljon a rendelkezésünkre konfigolható Bulma; JS nincs vagy csak kevéske. A Hugo maga is képes SASS-feldolgozásra, nem kell hozzá JS. Később megnézem, van-e ennek haszna ahhoz képest, hogy ha a jól bevált Laravel Mixet integrálnám (tehát külön npm+webpack build).

A beállítás nem nehéz, de nem is magától értetődő. Nagyrészt benne van a doksiban, amely használhatóságban messze elmarad a Laravelétől vagy a VueJS-étől.

Először is: a SASS/SCSS támogatás csak az „extended” Hugo-verzióban van benne. Lásd: Hugo telepítése forrásból.

$ hugo env
$ cd ~/sites
$ hugo new site mysite

Azt mondtam, hogy nem kell hozzá JS? Nos az npm mégis kell, most csak egyetlen CSS-csomagot telepítünk vele, amelynek még függőségei sincsenek.

$ cd mysite
$ nano package.json
$ npm i
{
  "private": true,
  "dependencies": {
    "bulma": "^0.8.0"
  }
}

Hozzuk létre a saját SCSS-fájlunkat az assets mappában, legyen a neve mondjuk assets/sass/app.scss, mint a Laravel defaulté.

@import url(//fonts.googleapis.com/css?family=Open+Sans:400italic,800italic,400,800);
@import 'bulma/sass/utilities/_all';

$body-background-color: $white-ter;
$family-primary: "Open Sans", sans-serif;

@import 'bulma/bulma';

// stb...

Ezután jöhet a Hugo Pipes. Nyissuk meg a témánkban azt a fájlt, amely behúzza a css-t, például most legyen a layouts/partials/header.html, és szúrjuk be a CSS(ek) helyére ezt:

{{ $css := resources.Get "sass/app.scss" | toCSS .Site.Params.Sass | fingerprint }}
<link rel="stylesheet" href="{{ $css.Permalink }}">

A toCSS opcióiként megadott .Site.Params.Sass saját paramétert jelöl, amelyet definiálnunk kell a Hugo-projekt konfigjában (config.yaml). Átnevezhetjük a végeredmény CSS-t, és ami a legfontosabb: megadhatjuk a node_modules-t import mappaként.

params:
  sass:
    targetPath: "css/app.css"
    outputStyle: "compressed"
    enableSourceMap: false
    includePaths: ["node_modules"]