パソコンのクリーンインストールを機に、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側に設定しておけばよい。
- Winボタンでメニューを開いた状態で
環境
と入力して環境変数を編集
を選択 Path
を選択して編集
ボタンを押す新規
ボタンを押し、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のアカウントが必要です)