Hexoで使ってるプラグインを晒してみたいと思います。
Hexoブログを始めてみたいという方の参考にしていただければ嬉しいです。また、こんな便利なものあるよー!とかがあったらTwitterなどで是非教えて下さい^^ 今のpackage.json
は下記のような感じです。使ってるnode.jsはv4.3とhexo v3.1です。
photo by Mr. Alex Garcia - Double Cliche on flickr
目次
package.json
まずは今使っているプラグインを晒してみたいと思います。
1 | { |
npmバージョン固定と最新バージョンの選択
冒頭で前述しましたが、使っているのはHexo v3.1です。また、各プラグインは最新のものや、過去のバージョンを敢えて固定してインストールしています。
hexoプラグインに限った話ではありませんが、プラグインの仕様が大きく変わる事があるので、バージョン固定が必要と感じたものは固定しています。
npmの話になりますが、package.jsonでバージョンナンバーに^
(キャレット)が無いものは、バージョンを固定してインストールしています。
逆に、^
が有るものは表記されているバージョンよりも最新のものが存在すればインストールすることを許可しているという意味ですので、予めご承知ください。
独自にカスタマイズしたプラグイン
また後述しますが、package.jsonのバージョンが、git+https://github.com/〜
で始まるものは既存のプラグインを独自にカスタマイズ、または新規で作成したオリジナルプラグインです。githubのリポジトリからnpmインストールしています。
gulpタスク
devDependencies
ではgulpに関するパッケージが占めています。テーマをカスタマイズしていた時期があったので、アセットをテーマに流し込むためにgulpタスクを使っていました。また、ポートフォリオ・サイトをgulpとYAMLファイルから自動生成できるようにしています。
gulpについては、Hexoとは関係が薄いため当記事では割愛します。
当ブログの表示例
表示例は以下のような感じです。
プラグインの解説
dependencies
を見ていくと何となく分かるかと思いますが、hexoプラグインは以下の様なものを使ってます。
更新が止まっているプラグイン
残念ながらここ数年、更新されていないプラグインも結構あります。その理由により、ユーザーによって好みにカスタマイズ(fork)されているケースも増えてきました。
痒い所に手が届くような機能が欲しい場合には、まずgithubリポジトリのforkを辿ってみる事をおすすめします。
必須プラグイン
おそらく殆どのケースで使うことになるプラグインです。こちらはブログのコンテンツを生成してくれるプラグインとなっています。
hexo-deployer-git
hexoをgithub pagesにアップロードする事ができる純正プラグイン。コマンドのhexo d -g
で簡単にgithubにデプロイができます。デプロイの方法は公式ドキュメントに解説されています。
そのほか、HerokuやRsync、OpenShiftにもデプロイできるプラグインが用意されているようです。
hexo-generator-archive
ブログのアーカイブを生成する純正プラグインです。同様にして、カテゴリやインデックスページ、タグのページを生成してくれるhexo-generator-category
、hexo-generator-index
、hexo-generator-tag
が用意されています。
SEO対策・フィード生成プラグイン
検索エンジン対策の助けとなるプラグインです。またフィードやサイトマップなどの生成を行ってくれるものも揃っています。
hexo-generator-feed
ブログのフィードを生成してくれるプラグインです。形式はatom
やrss2
をサポートしていて、生成数はオプションで変更できます。またGoogleに素早くインデックスさせるためのPubsubhubbubにも対応しています。
hexo-generator-robotstxt
検索エンジンのクローラー制御に使われるrobot.txtの生成ができるプラグインです。sitemap
やdisallow
、allow
のオプション指定ができます。
hexo-generator-seo-friendly-sitemap
サイトマップを生成してくれるプラグインです。名前からしてSEOフレンドリーなので、全ておまかせです(笑)
生成系プラグイン
特殊なページやリストを自動で生成してくれる便利なプラグインです。
hexo-include-markdown
記事の元となるマークダウンファイルに、別のマークダウンを読み込ませて表示させるプラグインです。複数の記事で同じような内容を使いたいけど、更新も頻繁にあるので作業大変!といったケースでメンテナンス性を上げる効果を発揮します。
hexo-generator-single-page
記事以外に、専用のレイアウトを使ったページを作りたい場合に便利なプラグインです。当ブログではポートフォリオのページに使っています。
text perforation
テーマテンプレートからシングルページを作るだけのHexoプラグイン
関連記事や人気の記事のリストを生成してくれるプラグインです。また、ページの閲覧数や記事のPV数を作成してくれます。
こちらは自分が作成したプラグインなのですが、Wordpressのrelated-posts系やpopular-posts系プラグインを意識して作りました。デザインのカスタマイズも自由できるのでよろしければ使ってみてください。
hexo-toc
目次を生成できる便利なプラグインです。markdownに<!-- toc -->
と記述すると、その位置に目次が生成されます。目次の内容は、プラグインが記事に含まれる見出しを探して、自動でリストを作成してくれます。
最新のバージョンでは日本語の見出しでリンクが正常に生成されないので、一部仕様を変更したものをフォークして使っています。
hexo-front-matter-excerpt (不使用)
記事に対して、概要を作成できるプラグインです。テーマによっては記事本文を要約した概要を表示する事ができます。
私が使っているテーマでは、うまく機能しなかったので、markdownファイルにdescription
という項目を用意して、概要表示させたり、SEO向けにmeta description
の内容として使っています。
hexo-generator-search
サイト内検索を提供してくるプラグイン。このサイトでもメニューとサイドバー(モバイルの場合はフッター)に検索ウインドウを用意しています。
検索用のテキストデータをxmlで自動生成してくれます。テキスト検索を行うので、検索結果の表示はかなり高速です。
hexo-generator-amp
google AMP (Accelerated Mobile Pages) を自動で生成してくれるプラグインです。hugoやjekyllにも似たものがありますが、こちらは1つの記事ページHTMLに対して、新たに1つのAMP HTMLを生成します。
こちらは自分が作成したプラグインです。静的サイトという利点を活かして、AMP HTMLファイル生成直後に記述の妥当性を自動チェックすることができます。妥当性を自動検証する機能は、Wordpress等では実現が難しい内容なので、Hexoならではの便利機能だと思っています。
画像や動画の埋め込み
外部のSNSや画像サービスの投稿を埋め込むことができるプラグインです。
hexo-tag-flickr
flickrの画像を短い記述で埋め込むことができる便利なプラグインです。難点としては、サーバーを立ち上げる度にFlickrへ画像のURLをリクエストしてしまう事です。ブログの画像数が多いとページの生成に時間が掛かります。
こちらは、独自にカスタマイズしたものを使っています。何度もリクエストしないようにキャッシュ機能を追加してみましたので、リクエスト時間が気になる方は、私のforkリポジトリを利用してみてください。
hexo-tag-instagram
instagramの画像や動画を短い記述で埋め込むことができる便利なプラグインです。こちらも自分が作成したプラグインです。
hexo-tag-twitter
Twitterのツイートを短い記述で埋め込むことができる便利なプラグインです。こちらも自分が作成したプラグインです。
hexo-tag-soundcloud
Sound Cloudのミュージックトラックをブログに埋め込む事ができるプラグインです。こちらも自分が作成したプラグインです。
hexo-tag-codepen
codepenを短い記述で埋め込むことができるプラグインです。
hexo-tag-twentytwenty
Before画像とAfter画像をスライダーで切り替え表示させるプラグインです。jquery.twentytwentyをHexoプラグインとして移植してみました。こちらも自分が作成したプラグインです。
hexo-tag-googlemaps
google mapを短い記述で埋め込むことができる便利なプラグインです。
圧縮プラグイン
主にサイト・パフォーマンスに関わる圧縮を手助けするプラグインです。
hexo-uglify
javascriptを圧縮してくれるプラグインです。特に難しいことはなく、インストールするだけで使えます。
hexo-clean-css
cssを圧縮してくれるプラグインです。表示速度のパフォーマンスを気にする方は入れておくのをオススメします。
依存元となってるclean-cssはいろんな圧縮オプションを設定できるるんですが、hexo-clean-cssは出力先のファイルしか指定できないようです。
hexo-html-minifier
HTMLを圧縮するプラグインです。こちらも表示速度を最適化したい方にオススメです。
本家html-minifierに依存しているので、同じ圧縮オプションがそのまま使えます。私はこんな設定にしてみました。
1 | html_minifier: |
またAMP HTMLを生成してくれるhexo-generator-ampでもhtml-minifierを積んでいますので、同様のhtml圧縮と多様なオプション指定が可能です。
テーマのカスタマイズに便利なプラグイン
テーマに独特の機能を追加したいときに便利なプラグインです。
cheerio
記事のhtmlデータを読み込んで、jQueyライクに操作ができるnodeのパッケージです。使う時は「チェリオー!」と唱えましょうw cheerioは、記事に対して共通したデータ加工を行いたい時に重宝します。
自分のブログでは、cheerioを使って、
- 記事の中で使った写真を収集し、写真一覧にする(ページ後半)
- 画像や動画、地図などをLazy load仕様に書き換える
などを行っています。
hexo-fs
node.jsのfs(ファイル操作)をhexoで使いたい時に使えるプラグインです。基本的にfs
と同じようにファイルに関する操作ができます。
mkdirp
こちらもhexo-fsと同様にファイル操作に関するプラグインです。存在しない深い階層であっても再帰的にディレクトリ生成してくれる便利なプラグインです。hexo-fs
と同時に使うとなかなか便利です。
最後に
静的ジェネレータのHexoで、一通りのページが作成できるようになりました。これからも新しいプラグインが続々と登場するので、動向をチェックしていきたいと思います。