Mit dem Upgrade auf eine Hugo version auf über 0.75.0 besteht die Möglichkeit das Kommando [hugo mod npm pack](https://gohugo.io/commands/hugo_mod_npm_pack/)
zu verwenden um die Node Abhängigkeiten eines Themes mit denen eines Projektes zusammenzuführen.
Dafür müssen die Abhängigkeiten eines Themes in einer Datei package.hugo.json
statt package.json
gesichert sein, es reicht einfach die von npm
oder yarn
angelegte Datei umzubenennen. Ein Symlink alleine funktioniert nicht, da Hugo’s virtuelles Dateisystem Symlinks nicht mag.
Wenn es nur darum geht die Abschnitte dependencies
und devDependencies
zusammenzuführen klappt das auch sehr gut. Wenn man allerdings noch spezielle Scripte (Abschnitt scripts
in package.json
) definiert hat, z.B. um bestehende Node Bibliotheken anzupassen, hilft das ganze nicht wirklich weiter, da diese Abschnitte (und alle anderen, die nicht explizit Abhängigkeiten definieren) bei der Zusammenführung ignoriert.
Dazu gibt es auch ein Hugo Feature Request, allerdings ist noch nicht ganz klar ob und wenn ja, wann dieser umgesetzt wird.
Bis dahin muss man sich selber Scripte basteln, die das mit Hilfe von jq
erledigen.
Ein Beispiel für zwei Dateien:
jq -s '.[0] * .[1]' package.hugo.json themes/some-hugo-theme-with-npm-dependencies/package.hugo.json
Ein Beispiel für mehrere Themes (funktioniert nur mit BSD find
, nicht auf GitHub):
find . -name "package.hugo.json" -o -name "package.json" -depth 0 | xargs jq -s add > package.json