A clean documentation and blog theme for your Hugo site based on Bootstrap 5
Hinode is a clean blog theme for Hugo, an open-source static site generator. Use this template if you would like to take advantage of automation features, provided by npm and GitHub actions. Visit the docs for an alternative installation that uses Hugo only.
Hinode is a theme that uses Hugo modules to install and maintain various components. The Hinode template requires the following software to be installed on your local machine. The Hugo binary itself is embedded as an npm binary.
-
Create a new repository
Click the button
Use this templateto initialize a new repository based on this template (log in to GitHub if needed). -
Clone a local copy
git clone https://github.com/owner/my-hinode-site && cd my-hinode-site # replace "owner/my-hinode-site"
-
Install the npm packages and hugo modules
npm install && npm run mod:update
You can now run npm run start to start a local development server.
This template uses npm by default. If you prefer pnpm — faster installs, a shared package store, a 24-hour supply-chain quarantine, and stricter dependency isolation — switch with the following steps.
-
Replace the lockfile:
pnpm import # seed pnpm-lock.yaml from package-lock.json rm package-lock.json -
Pin pnpm in
package.json(use your installed pnpm version):"packageManager": "pnpm@10.0.0"
-
Add a
.npmrcfor the supply-chain quarantine:# Reject any version published less than 24h ago. minimum-release-age=1440
-
Add
pnpm-workspace.yaml:allowBuilds: hugo-extended: true # downloads the platform-specific Hugo binary minimumReleaseAgeExclude: - "@gethinode/*"
-
Restore PostCSS compatibility. Hugo needs an npm-format
postcssbin shim, which pnpm does not create. Addcmd-shimand a postinstall step:pnpm add -D cmd-shim
Create
scripts/fix-postcss-bin.cjs:const fs = require('fs'); const path = require('path'); const cmdShim = require('cmd-shim'); const entry = path.join('node_modules', 'postcss-cli', 'index.js'); const target = path.join('node_modules', '.bin', 'postcss'); if (fs.existsSync(entry)) { fs.mkdirSync(path.dirname(target), { recursive: true }); cmdShim(entry, target).catch((e) => { console.error('fix-postcss-bin:', e.message); process.exit(1); }); }
Then add to your
package.jsonscripts:"postinstall": "node scripts/fix-postcss-bin.cjs". -
Install and build:
pnpm install pnpm run build
If you use the bundled GitHub Actions workflows, update them to use pnpm as well — replace the npm ci/npm i install steps with pnpm install (which runs the postinstall shim above).
