初めてのプラグイン

プラグインを使用すると、Jekyllの動作をニーズに合わせて拡張できます。Jekyllには6種類のプラグインがあります。

ジェネレーター

ジェネレーターは、サイトにコンテンツを作成します。例えば

  • jekyll-feedは、ブログ投稿のAtomフィードを作成します。
  • jekyll-archivesは、ブログのカテゴリとタグのアーカイブページを作成します。
  • jekyll-sitemapは、サイトマップを作成します。

コンバーター

コンバーターは、マークアップ言語を別の形式に変換します。例えば

コマンド

コマンドは、jekyll実行可能ファイルにサブコマンドを追加します。例えば

  • jekyll-composeは、投稿、ページ、または下書きを作成するためのサブコマンドを追加します。

タグ

タグは、カスタムLiquidタグを作成します。例えば

フィルター

フィルターは、カスタムLiquidフィルターを作成します。例えば

  • jekyll-time-ago - 2つの日付間の期間を言葉で表します。
  • jekyll-toc - 目次を生成します。
  • jekyll-email-protect - スパムボットから保護するためにメールアドレスを難読化します。

フック

フックは、ビルドプロセスを拡張するためのきめ細かい制御を提供します。例えば

  • jemoji 絵文字を表示します :+1:
  • jekyll-mentionsは、メンション@jekyllをリンクに変換します
  • jekyll-spaceship - 高度な例。テーブル、MathJax、PlantUML、ビデオなどを強力にサポートします。

フラグ

プラグインを作成する際に注意すべき2つのフラグがあります

フラグ 説明

safe

このプラグインが、任意のコード実行が許可されていない環境で安全に実行できるかどうかをJekyllに知らせるブール値のフラグ。これは、GitHub Pagesで使用され、どのコアプラグインを使用できるか、どれが実行するには安全でないかを判断します。プラグインが任意のコード実行を許可しない場合は、これをtrueに設定します。GitHub Pagesは依然としてプラグインを読み込みませんが、コアに含めるために送信する場合、これが正しい方が良いでしょう!

priority

このフラグは、プラグインがロードされる順序を決定します。有効な値は、:lowest:low:normal:high、および:highestです。優先順位の高いものが最初に適用され、優先順位の低いものが最後に適用されます。

上記のサンプルプラグインの1つを例として使用すると、これら2つのフラグを指定する方法は次のとおりです

module Jekyll
  class UpcaseConverter < Converter
    safe true
    priority :low
    ...
  end
end

ベストプラクティス

このガイドは、プラグインの作成に関する具体的な手順を説明しています。また、プラグインの構造化に役立つ推奨されるベストプラクティスもいくつかあります。

プラグインにはgemを使用することをお勧めします。これにより、依存関係を管理し、サイトのソースコードから分離し、複数のプロジェクトで機能を共有できます。gemの作成に関するヒントについては、Ruby gemsガイドを参照するか、jekyll-feedなどの既存のプラグインのソースコードを確認してください。