Skip to content
Go back

Hugoとnpmを合わせて使う

npmをビルドツールとして使えないか調べます。

  • Congoテーマをいじっていると、TailwindCSSに使えない要素があったりする
    • カスタムCSSに同等の内容を追記すれば対処は可能だけれど…
  • CongoにあるCSSは必要な分しか載っていないので、追加の要素が欲しいならTailwindCSSをビルドし直す必要があるらしい
  • せっかくなので、npmをビルドツールとして使えるようにしたい
    • ファイルを監視して前処理を行うこともできるようになるはず

TailwindCSSをビルドさせるまでの手順#

  • winget install nodejsでNode.jsでインストールする
  • npm install --save-dev tailwindcss@^3 @tailwindcss/typography @tailwindcss/cliでTailwindCSSを依存関係に追加する
    • @^3はCongoが依存するv3(の最新版)を指定する
    • --save-devはそのパッケージを開発用として記録する
  • 以下のようなtailwind.config.jsを作る
module.exports = {
    presets: [require("./themes/congo/tailwind.config.js")],
    content: [
        "./layouts/**/*.html",
        "./content/**/*.{html,md}",
        "./themes/congo-mod/layouts/**/*.html",
        "./themes/congo/layouts/**/*.html",
    ],
};
  • npx @tailwindcss/cli -i ./themes/congo/assets/css/main.css -o ./assets/css/compiled/main.css --jitでビルドする
    • Browserslist: caniuse-lite is outdated. Please run: npx update-browserslist-db@latestと出てくるが、指示通りやってもまた出るので、とりあえず無視した

npmからHugoをビルドさせるには#

  • package.jsonscriptsプロパティに{"<name>": "<command>"}と書くと、npm run <name><command>をシェル上で実行するようになる
    • スクリプト名は任意に決められる
    • pre<name>post<name>というスクリプトを定義すると、<name>を実行する前後にそれぞれ実行される
    • npm run <name> A -- Bと書くと、Aはnpm側の引数として、Bはスクリプト側の引数として渡される
  • npm installnpm startなどは特定の名前のスクリプトを所定のタイミングで呼び出す
    • 例えば、npm startprestartstartpoststartの順でスクリプトを呼び出す
  • Hugoと合わせて使う場合、例えばpackage.jsonを以下のようにする
{
    "scripts": {
		"start": "hugo server -M",
		"build": "hugo --minify"
	}
}

その他、便利そうなこと#

  • nodemon
    • ファイルの変更を検知してアプリケーションを再起動してくれるツール
    • 前処理が必要なファイルを監視するのに使えるかも
  • pnpm
    • より高速なnpm互換ツール
    • 複数のスクリプトの一括起動が標準機能でできるらしい
  • 詳しくは後日改めて

参考資料#