ホームページ バックエンド開発 Golang Vercel で Hugo をホストする方法

Vercel で Hugo をホストする方法

Nov 30, 2024 pm 02:39 PM

私は Hugo と一緒に個人的なウェブサイトを構築することにしました。私が選択に基づいた唯一の基準はビルド時間でした。コンテンツ管理の特典に関しては、Hugo は Astro と同じレベルにあると思っていましたが、まだそこまでではありません。あるいは、これまで私が出会った他のほとんどの静的サイト ジェネレーターよりも古いため、独自の道を歩んでいるとも言えます。さらに、これは Go アプリケーションであるため、テクノロジーの選択を評価する際に考慮すべきもう 1 つの重要な要素となります。

何が追加できるのか!

はい、Hugo の機能を拡張することができます。ビルド プロセスを変更するモジュールを通じて、不足している機能を追加できます。たとえば、Hugo では MDX サポートが不足していました。ビルド時に MDX をレンダリングするモジュールを通じてこの問題に対処できます。私自身は試したことはありませんが、可能だと思われます。
また、並列ビルド パイプラインを追加することもできます (そう呼ぶことができるのであれば)。これには、Vite、Turbo、Webpack などのツールの使用が必要になる場合があります。ただし、このアプローチではビルド プロセスが複雑になり、Hugo の主要なビルド メカニズムが遅くなる可能性があります。これらの統合は、Tailwind およびその他のフロントエンド ライブラリを組み込むために使用されています。興味深いことに、Hugo の今後の機能を見ると、Tailwind と他のテクノロジーを統合する計画が示されています。

ヴェルセルを基礎にして構築する

私はいくつかのサードパーティの Hugo ツール、特に HugoMods を使用しました。フォント全体をインポートせずにウェブサイトにアイコンを追加したかったので、アイコン モジュールに注目しました。検索中に最初に表示されたのは Icons モジュールでした。 Bootstrap、Font Awesome、Feather アイコンなど、さまざまなアイコン ベンダーを提供しています。
ローカルでは、すべてが完璧に機能しました。しかし、変更をプッシュした後、何も変わっていないようでした。 Vercel のビルド ページを確認すると、次のことに気づきました...

[12:10:48.021] Running build in Washington, D.C., USA (East) – iad1
[12:10:48.210] Cloning github.com/mohessaid/mohessaid (Branch: main, Commit: eaeecd1)
[12:10:48.449] Cloning completed: 238.727ms
[12:10:49.038] Restored build cache from previous deployment (5i5sCdjnY3KZXgGBqbqfgJUjrwYB)
[12:10:49.132] Running "vercel build"
[12:10:49.714] Vercel CLI 39.0.2
[12:10:50.440] Total in 3 ms
[12:10:50.441] Error: failed to load modules: failed to download modules: binary with name "go" not found in PATH
[12:10:50.446] Error: Command "hugo --gc" exited with 1
[12:10:50.625]
ログイン後にコピー

Hugo がビルドに必要なモジュールをインストールしようとしたとき、Go バイナリが見つかりませんでした。私は迅速な解決を期待してクロードと GPT に助けを求めましたが、彼らは直接支援を提供することができませんでした。私は彼らを各ステップごとにガイドしなければなりませんでしたが、最終的には彼らが私を助けてくれるという希望を失いました。
Vercel 入力フィールドの制限がなければ、ほぼ成功する解決策として Claude を使用したこともありました。

何がうまくいきましたか?

Vercel ダッシュボードで自分の Web サイトの設定ページに移動しました。 [環境変数] タブで、「HUGO_VERSION」という名前の変数を追加し、その値を利用可能な Hugo の最新バージョンに設定しました。

How to Host Hugo in Vercel

「全般」タブで、フレームワークのプリセットとして Hugo を選択します。次に、ビルド コマンドを次のようにオーバーライドします:

curl -L https://go.dev/dl/go1.22.2.linux-amd64.tar.gz -o go1.22.2.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz && export PATH=$PATH:/usr/local/go/bin && go env GOTPATH  &&  hugo --gc --minify 
ログイン後にコピー

How to Host Hugo in Vercel

注: 私は Go バージョン 1.22.2 を使用しています。これは、執筆時点で最新です。特定の要件に合わせてバージョンを変更できます。

ビルド コマンドを使用する理由

あなたの疑念はわかります。あなたと同じように、私も賢い解決策があると思っていました。最初に、[インストール コマンド] フィールドで Go をインストールしようとしましたが、惨めに失敗しました。私の徹底的なトラブルシューティングにも関わらず、Vercel のビルド プロセスはバイナリを見つけることができませんでした。
無数の潜在的な解決策を模索しましたが成功しませんでした。私は、誰かがインストール プロセス全体をビルド フィールドに直接配置していたという GitHub の問題に遭遇しました。彼らのアプローチを真似して、私は最終的に成功を収めました。この時点で、解決策はすべてを物語っています。
これらの手順をインストール コマンド フィールドに入力しようとすると、エラーが発生する可能性があります。

How to Host Hugo in Vercel

またはこれ

How to Host Hugo in Vercel

Amazon Linux Extras をインストールしても、Go インストールの課題は解決されません。この方法で利用できる Go のバージョンはかなり古いです。このアプローチを徹底的にテストしましたが、一貫して失敗しました。インストール コマンドで yum と dnf の両方のパッケージ マネージャーを使用しようとしましたが、どちらの方法でも Go バイナリの問題を解決できませんでした。


最後に、この投稿をさまざまなプラットフォーム間で共有して、どのプラットフォームが検索結果で最初に表示されるかをテストしました。私は数か月前にこれを行うつもりでした。しかし、適切な投稿ができませんでした。ここから実験をフォローできます。

以上がVercel で Hugo をホストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか? Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか? Mar 03, 2025 pm 05:17 PM

Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

Beegoフレームワークのページ間で短期情報転送を実装する方法は? Beegoフレームワークのページ間で短期情報転送を実装する方法は? Mar 03, 2025 pm 05:22 PM

Beegoフレームワークのページ間で短期情報転送を実装する方法は?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は? MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は? Mar 03, 2025 pm 05:18 PM

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? Mar 10, 2025 pm 03:20 PM

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? Mar 10, 2025 pm 05:38 PM

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

Goでユニットテストをどのように書きますか? Goでユニットテストをどのように書きますか? Mar 21, 2025 pm 06:34 PM

Goでユニットテストをどのように書きますか?

Go言語でファイルを便利に書く方法は? Go言語でファイルを便利に書く方法は? Mar 03, 2025 pm 05:15 PM

Go言語でファイルを便利に書く方法は?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか? トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか? Mar 10, 2025 pm 05:36 PM

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

See all articles