9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Hugo v0.56 新機能 Modules と deploy

Last updated at Posted at 2019-07-26

Hugo v0.56 がリリース

今回のリリース Hugo v0.56 では Hugo Modules と Hugo deploy の二つの新機能が実装されました。この記事ではそれらの紹介をします。

homebrew-core の Hugo は既に v0.56 へ更新されています。Docker で試したい方は Docker image of Hugo extended version を使ってみてください。GitHub Actions で試したい方は GitHub Actions for Hugo extended をどうぞ。もちろん Release v0.56.0 - gohugoio/hugo からバイナリをダウンロードして実行もできます。

Hugo Modules

動作要件

Hugo Modules は Go Modules に似た機能であり、実際のところ Go Modules に依存しています。Hugo Modules を利用するには以下がインストールされている必要があります。

  • Go 1.12 以上
  • Git

v0.55.6 までの Hugo の実行に Go の実行環境は必要ありませんでしたが、今後 Hugo Modules を利用したい場合には必要となります。もちろん Hugo Modules を使わない場合は今まで通りGo言語の実行環境は必要ありません。

個人的には Netlify で Hugo Modules を利用できるのか が気になりましたが Netlify は Go 1.12 の実行環境を用意してくれているので、問題なく Hugo Modules を使えます。

「手元では Go を実行できるけど CI/CD をさせるリモート側でどうしても Go をインストールできない、それでも Hugo Modules の恩恵を受けたい」 のような場合は手元の環境で hugo mod vendor を実行して依存をすべて _vendor 以下に出力し、それもリモート側に送れば良いです。

できること

具体的に何ができるかと言うと、以下のような Hugo プロジェクトを構成するコンポーネントを

  • static
  • content
  • layouts
  • data
  • assets
  • i18n
  • archetypes
  • themes

外部のリポジトリからインポートして利用できるようになりました。Hugo テンプレートが書かれている HTML ファイルや JavaScript, CSS などを異なる Hugo プロジェクト間で使い回せます。

go get コマンドのような感じでコンポーネントをプロジェクトにインポートして管理できます。

hugo mod get -u github.com/bep/my-theme

これまでは公開されている Hugo theme を導入する方法として

  • Git submodule
  • Zip でダウンロードしてコンテンツ同様に扱う

が主な手段でした。今後は対象の Theme が Hugo Modules での導入に対応していれば、以下のように config.toml にテーマのパスを記載しておくだけでインポートができます。

config.toml
[module]
[[module.imports]]
path="github.com/bep/hugo-fresh"

デモ

動画は Hugo theme の切り替えと partials のインポートを行う様子です。hugo server で確認しながらインポート、つまりホットリロードが可能です。

コマンド

hugo mod clean   # キャッシュをクリアします。
hugo mod get     # 現在の Hugo プロジェクトの依存を解決します。
hugo mod graph   # モジュールの依存グラフを出力します。
hugo mod init    # Hugo Module として現在のプロジェクトを初期化します。
hugo mod tidy    # go.mod と go.sum から利用されていないものを削除します。
hugo mod vendor  # _vendor ディレクトリにモジュールの依存を保存します。

Hugo Deploy

以下のホスティングサービスに hugo deploy コマンドでデプロイができるようになりました。

  • GCS (Google Cloud Storage )
  • S3 (Amazon Simple Storage Service)
  • Azure Storage
9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?