https://blog.m1sk9.dev/posts/feed.xml

Vercel は Zola 環境を用意していない

2025-01-05

このブログを Zola という Rust 製の SSG に移植した際,デプロイ先に Cloudflare Pages と Vercel を検討した.

Cloudflare Pages はビルドイメージ等の問題で Zola の環境がうまく使えないらしい.実際私も同じ問題に遭遇したがもう1年近く放置されているので期待するのはやめた.

Vercel も Cloudflare Pages と同じようにプリセットに Zola を用意しているので,これを使えば問題ないだろうと思った.

だが,どうやら Vercel もビルド環境に Zola を用意していないらしい.

Vercel に石を投げてもいいんだが,放置される未来が見えるし Vercel 上で解決方法を探すことにした.

環境変数で Zola のバージョンを指定する

Vercel は各パッケージや環境のバージョンを環境変数で指定できる.これは Cloudflare Pages でも同様1

Zola のバージョンを指定するためには,ZOLA_VERSION という環境変数を設定すればいい.

この記事の公開時点(2025/01/05)での最新バージョンは 0.19.2 なので,以下のように設定する.

Submodule 側の設定

テーマをインストールしている場合は Submodule 側の設定も必要になる.

Vercel は SSH での Git URL で設定されている Submodule のリポジトリをチェックアウトすることはできない (多分)2

そのため,Submodule のリポジトリを HTTPS で設定し直す必要がある.

.git/config:

[submodule "themes/serene"]
	url = https://github.com/m1sk9-lib/serene.git
	active = true

.gitmodules:

[submodule "themes/serene"]
	path = themes/serene
	url = https://github.com/m1sk9-lib/serene.git

1

最も Cloudflare Pages は最新の Node.js をデフォルトでサポートしないというとんでも運用なので,この環境変数ノウハウはよく使う.

2

出来る方法もおそらく存在はするが,git pull するだけなんだから HTTPS を使うが一番手っ取り早いだろう.