Mono Works

チラシのすきま

hugo 周辺環境刷新とVSCodeとの連携

パソコンのクリーンインストールを機に、hugoのためのスクリプト実行環境である Bash on Ubuntu on Windows(名称が Windows Subsystem for Linux に変更)を入れ替えたのですが、環境構築手順も変わっていたり、LinuxからWindowsのEXEファイルを実行できるようになっていたり、久しぶりにhugoのバージョンを上げたら、仕様が変更されていた部分があったので、今回の記事に諸々まとめました。

更新履歴

変更01: 2018/09/02

hugo v0.42からテーマファイルの指定方法が変更されていた件について、あらためて検証をおこなったので、記事を変更

WSLの導入

コントロールパネル -> プログラムと機能 -> Windowsの機能の有効化または無効化 -> Windows Subsystem for Linuxにチェックが付いていることを確認。チェックを付けた場合は、Windowsの再起動が必要。

その後、コマンドプロンプトもしくはPowerShellでwslと入力して実行すると『ディストリビューションがインストールされてへんで』という警告と Microsoft Store へのリンクが表示される。リンク先の Microsoft Store から自分が使うディストリビューションを選択してインストール。(以下の説明は、Ubuntuでの説明になります)

インストール後、Ubuntuを起動すると、あらためて『インストールしてるから、ちょっと待ってな…』と表示され、しばらく待つと、ユーザ名とパスワードの設定をおこない、やっと WSLの導入完了。

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: ユーザー名
Enter new UNIX password: パスワード(1回目入力)
Retype new UNIX password: パスワード(2回目入力)
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ユーザー名@コンピュータ名:~$

ここでいったん Ubuntu のシェルを閉じて、以降は Visual Studio Code(以下、VSCode)上で作業します。

VSCodeで WSLの起動と初期設定

VSCodeを起動し、hugoの作業フォルダを開いておきます。 Ctrl+@でターミナルを起動。デフォルトだと cmd か PowerShell が起動するのでwslと入力して実行します。

以前はホスト名を明記してましたが、cat /etc/hostsで確認したところ、現在はデフォルトでコンピュータ名が設定されているようです。

リポジトリを日本のサーバーに切り替え

sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list

アップデート

sudo apt update
sudo apt upgrade

WSLにHugoをインストール

hugo の Releases バージョンからインストールするバージョンのhugo_0.xx_Linux-64bit.debのアドレスを取得して、下記コマンドを実行。

(追記:2018/6/17)v0.42.1でタグ一覧ページの生成に失敗していたので、以前使っていたv0.27.1に戻しました。それに伴い、記事内容を一部変更。

cd ~
wget https://github.com/gohugoio/hugo/releases/download/v0.27.1/hugo_0.27.1_Linux-64bit.deb
(ダウンロード)

sudo dpkg -i hugo*.deb
(インストール)

インストール後、バージョンを確認

hugo version

下記のように表示されたらインストール完了

Hugo Static Site Generator v0.27.1 linux/amd64 BuildDate: 2017-09-13T20:04:10+09:00

hugo newで新規記事を生成したら、そのままVSCodeで開く

Windows 10 Creators UpdateからWindowsのEXEを実行できるようになったので、以前作ったスクリプトに「新規記事作成後にVSCodeの起動して作成したファイルを開く」を追加した。

スクリプトの変更

追加したのはCode.exe "$file_path"の1行。

#!/bin/bash
main () {
  slug="$1"
  file_name="post/$(date +"%Y-%m-%d")-${slug}.md"
  file_path="content/$file_name"
  if [ ! -e "$file_path" ]; then
    hugo new "$file_name"
    sed -i -e 's/title = \".*\"/title = \"タイトルをここに\"/g' "$file_path"
    sed -i -e "s/slug = \".*\"/slug = \"$(date +"%Y-%m-%d")-$slug\"/g" "$file_path"
  else
    echo "$file_name already exists."
  fi
Code.exe "$file_path"
}
main "$@"

EXEファイルのPath設定

VSCodeのEXEファイル(Code.exe)のPathは、Windows側に設定しておけばよい。

  1. Winボタンでメニューを開いた状態で環境と入力して環境変数を編集を選択
  2. Pathを選択して編集ボタンを押す
  3. 新規ボタンを押し、C:\Program Files\Microsoft VS Codeを設定

以上を設定して、スクリプトを実行すると、content/post/に記事が生成され、VSCodeでファイルが開きます。

bash new-post.sh [記事のファイル名]

その他変更したところ

前から変更していた箇所も含め、メモっておきます。

default.md(デフォルトのFront matter設定)

archetypes\default.mdの内容を以下のように

+++
date = "{{ .Date }}"
slug = ""
title = ""
tags = ["", "", ""]
draft = true
+++

build.sh(ビルド用スクリプト)

以下、あらためてやり直したので、こちらの記事を参照して下さい。

v0.42.1でタグ一覧ページの生成に失敗していたので、以前使っていたv0.27.1に戻しました。それに伴い、下記内容は一時保留として、元の-t="release"を使用。**

以前書いた記事の記述 -t="release" だとビルド時にエラーとなったので、あらためてhelpを確認。

-t, –theme string theme to use (located in /themes/THEMENAME/)

–themesDir string filesystem path to themes directory

–uglyURLs (deprecated) if true, use /filename.html instead of /filename/

うーん。-t releaseとか--theme releaseでも良さそうなんだけど、なぜかエラーになるので、記述を以下のように変更。

#!/bin/sh

rm -r public/*

hugo –themesDir /themes/release/

これだとうまくいきました。

コメント

コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内