Katsuoのサイト
node.jsを利用した静的サイトジェネレーターのHexoでブログを作成し、github pages上でブログを公開するための手順の忘備録。
Hexoの特徴として下記があげられる。
Hexoの仕組みとして、Hexoがブログのインフラ。そしてHexoのために様々なブログテーマのテンプレートやプラグインなど、
Hexoの機能を拡張できるものが様々な第3者によって公開されている。
そのため、Hexoを利用するにあたっては、下記のアプローチが必要となる。
記事を見るとよく書かれているが、Hexoは簡単ということらしいが、個人的に感じた感じではむしろ逆で、ある程度基本的な仕組みを理解していないと、
何をしているのかが分からなくなる。そのため、まずはHexoについての使い方をきちんと自分なりに整理しておくことが大切。
OS
OSは何にでも対応している。
パソコン
パソコンのローカルの記憶装置にHexoに必要なファイル類を全て保存するので、ある程度の記憶容量があった方がいい。
Hexoで楽々ブログを作れる!!みたいな、簡単さを強調するようなフレーズをやたらち見かけるので、簡単なのかと思っていると、
全然そんなことはなく、むしろ難しくてものにならないとさえ感じました。なので、まずは概要を分かる範囲で理解していこうと
考えました。
Hexoは、パソコンのローカルの記憶装置に保存し作成したファイルをGitHub上にアップロードし、github pagesのホスティング機能を利用して、
ブログとしてリリースする。
そのため、まずはローカルでブログを作成して、github pagesでホスティングするのに必要なファイル一式をgithub pagesのリポジトリにアップロードする。
そしてgithub pagesの機能によってブログをビルドし、公開するという手順になる。
hexo自体がnpmでインストールするパッケージなので、hexoはnode.jsの実行環境で動作するアプリ。
詳しくは公式のドキュメント類を参照する。
nvm(MacOS),node.js,npmをインストール
node.jsはiphoneに入れたアプリのiphoneに相当する、javascriptのアプリを入れる箱、実行環境のようなもの。
nvmはnode.jsのバージョンを好きなものに切り替えることができるツールで、node.jsを包む箱のようなもの。
npmはnode.jsで使用するパッケージをインストールしたり削除したりするパッケージ管理ツール(aptやbrewのような)で、node.jsに同梱されている。
※nvmでnode.jsをインストールしなくても、brewで最新版のnode.jsをインストールし、brew upgradeでnode.jsを最新版にするというシンプルな. 方法の方が簡単かも。brewでnode.jsをインストールするには、下記のコマンドを実行する。
brew install node
最初にnvmをインストールし、nvmのコマンドでnode.jsをインストールする。 nvmはgithubにあるパッケージで、インストール方法もgithubを参照する。
下記コマンドでインストーラをダウンロードしインストールのためのシェルスクリプトが実行される。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
ターミナルを一度閉じてまた開くとnvmのコマンドが使えるようになる。
nvmコマンドのヘルプの表示:
$ nvm --help
nvmのバージョンの表示:
$ nvm --version
nvmでインストールできるnode.jsを表示する:
$ nvm ls-remote
//インストール可能なnode.jsのバージョンがズラーっと表示される
nvmでインストールしたnode.jsのバージョンの表示:
$ nvm ls
任意のバージョンのnode.jsをインストール:
$ nvm install v16.14.2 //node.jsのバージョンv16.14.2をインストール
任意のバージョンのnode.jsをアンインストール:
$ nvm uninstall v16.14.2 //node.jsのバージョンv16.14.2をアンインストール
任意のバージョンのnode.jsを使う:
$ nvm use v16.14.2 //node.jsのバージョンv16.14.2を使用
npmを最新版にアップデート
$ npm update -g npm
以上でHexoで使用するパッケージのインストール作業は完了。
nvsをインストール(nvmとnvsがあるけどドキュメントではnvsを推奨しているため)。
chocoを使ってインストール。
> choco install nvs
> nvs //windows terminalをreopen後に実行
nvs : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\katsuo\AppData\Local\nvs\nvs.ps1 を読み
込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参
照してください。
上記のように、メッセージが出る場合がある。初期値ではスクリプトの実行が無効になっているので、その場合はスクリプトの実行を有効にする。
> Get-ExecutionPolicy //実行ポリシーを確認
Restricted //確認結果
実行したユーザーのPowerShell上においては署名が行われたシェルスクリプトは制限なく実行できるように変更(自作スクリプトも制限の対象外になる)。
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
> Get-ExecutionPolicy
RemoteSigned
nvsでnodeのインストールをしたり特定のバージョンに切り替えたりする。
nvsのドキュメントを参照する。
> nvs add latest //最新版のnode.jsをインストール
> nvs use node/17.8.0/x64 //現在のシェルにパスが通る
PATH += $env:LOCALAPPDATA\nvs\node\17.8.0\x64
> node link node/17.8.0/x64 //デフォルトでの使用設定
$env:LOCALAPPDATA\nvs\default -> $env:LOCALAPPDATA\nvs\node\17.8.0\x64
User profile PATH += $env:LOCALAPPDATA\nvs\default
npmでhexo-cliをインストール
> npm install -g hexo-cli
ブログ用のローカルディレクトリを作成する。
> mkdir C:\Users\user\blog
ブログ用のローカルディレクトリをhexoで初期化する。
> hexo init C:\Users\user\blog
初期化によってブログに必要なファイルが生成される。
hexoのブログをローカルサーバーで確認
> cd blog
> npm install //必要なパッケージがインストールされる
> hexo server
表示されたアドレスをブラウザに入力するとhexoで作られたブログの画面が表示される。
ローカルサーバーはCtrl + cで停止できる。
生成されたファイルの説明
node_modules:
hexoで使われるnpmライブラリの置き場所
public:
公開用のデータ一式がここに書き出される
scaffolds:
記事や固定ページを作るときに必要なMarkdownテンプレート集。
hexoで新しい記事をビルドするときに、このフォルダからマークダウンの.mdファイルを参照する。
source:
記事や固定ページを構成するMarkdown,画像データを置く場所
この場所の記事用のmdファイルをマークダウンで編集することで、ブログ記事として反映される。
themes:
ブログのテーマが置かれる場所(デフォルトテーマ入が最初から入っている)
config.yml:
ブログのタイトルやURLなどhexoで作られるブログの設定を書くためのファイル
.gitignore:
gitの取り扱いの対象外にさせるファイルやディレクトリを書くファイル
db.json:
キャッシュが書き込まれるファイル
package-lock.json:
特定のバージョンのライブラリ構成を共有するためのファイル
package.json:
Hexoを構成しているライブラリのリスト。EJS、stylus、markdownなどの機能がデフォルトで組み込まれている。
EJSはJavascriptで使われるテンプレートエンジンと呼ばれる機能で、共通パーツのヘッダーやフッターなどを
パーツ化することで、個別に管理できるもの。ワードプレスのテンプレートに使われるような機能。
stylusは、CSSを便利に書けるようになっている機能。
デフォルトで入っている機能は後で任意でアンインストールできるようになっている。
config.ymlの内容を修正して/source内にMarkdownで記事を作って、/publicに書き出されたファイル一式を
Web上にアップロードするとブログが公開できる。
/node_modulesディレクトリにnpmコマンドで特定のnodeライブラリを追加することで任意の機能を追加できる。
/themes内でテーマを編集または追加または新規作成すると、ブログの見た目や出力方法を変えられる。
Hexoブログの設定はconfig.ymlに書き込んで変更する。
config.ymlファイルを編集(編集する箇所のみ抜粋)
# Site
title: katsuo blog
subtitle: ''
description: ''
keywords:
author: katsuo
language: en
timezone: ''
# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: https://kyachuo.github.io/katsuo-blog/ # 自分のgithub pagesのurl
permalink: :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
スラッシュなどあらかじめ設定されているアクセス方法でアクセスされたら自動でindex.htmlを探して表示する機能。おそらく。
trailing_html: true # Set to false to remove trailing '.html' from permalinks
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: git@github.com/hogehoge/hoge-blog.git # 自分のgithubのブログのリポジトリ,sshの方
branch:
詳しくはhexoのドキュメントに書いてあるけど、
サブディレクトリの設定もできる。自分のconfig.ym fileでは項目を削除してしまっている。必要に応じて追加する。
サブディレクトリとは、ブログの中に少しメインとは異なるジャンルの子ブログを作るみたいなイメージ。
もともとのブログのドメインパワーを引き継ぐことができる。
gitで簡単にdeployするためのパッケージをインストール
> npm install hexo-deployer-git --save
デプロイ前にgithubに公開鍵を登録する。詳しくは参考記事参照. 公開鍵登録することでsshでgithubにデプロイしてくれる。config.ymlのdeployのrepoはhttpsにするとgithubではサポートされていない方式. でのアクセスになりデプロイできない。
ブログをgithub pages上にデプロイ
> hexo deploy
hexoのサイトでいろんなテーマを載せているページがあるので、そのページから好みのテーマを決める。
テーマを決めたら、使いたいテーマのgithubのリポジトリのリンクをクリックしリポジトリのページで導入の仕方など参照する。
テーマのリポジトリを自分のローカルパソコンにインストールし、必要なパッケージ等を説明に沿って別途インストール等して、config.ymlファイル
にテーマを設定することでテーマを適用することができる。
テーマのリポジトリを自分のローカルパソコン上にインストールする方法は何種類かある。
テーマのマニュアルを読むとテーマを適用する方法が載っているのでそれを参照してする。
最初はicarusというテーマを使ってみたが設定が難しく感じたので、particlexというテーマを適用してみた。
particlexのgithubに設定方法が記載されている。
どのテーマを使うかの判断として、githubを見て数年更新されていない場合は何かと面倒なことになったので、
なるべく新しいテーマを使った方がスムーズに設定など進むので良いと感じた。
particlex専用の設定のconfig.ymlファイルは、themes/particlexディレクトリ内にある。
pollyfill.
古いブラウザでもJavaScriptがきちんと動作させるためのプラグイン。これを設定することで、
未対応のブラウザでもおかしくなることなくちゃんと動作してくれる。デフォルトで有効になっている。
highlight.js. 記事にソースコードを記載するときに見やすく色分けハイライト表示してくれる。デフォルトで有効になっている。
Katex math rendering.
数式を表示するための設定。HTMLとCSSだけで描画するので描画速度がsvgよりも速い。
デフォルトで無効になっている。
Image Preview. 画像をクリックしたときに拡大、縮小する設定。デフォルトで有効になっている。
Giscus. 記事にコメント機能をつけるための設定. デフォルトでは無効