Jekyllでカスタムプラグインを作成してみる
環境変数をjekyll build時にHTMLへ埋め込むプラグインを作成
[ 目次 ]
はじめに
こんにちは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。
この記事は過去に運用していたブログからの移行記事になります。
今回は、Jekyllのプラグインを作成します。
きっかけはGoogle AnalyticsのトラッキングIDやGoogle MapのAPI Keyなどセキュリティ的に_config.yml
に直接埋め込みたくないものを環境変数で持たせたいと思ったからです。
また、WEBサービスを作る際は、production, staging, developmentなど環境によって変数を変更したいケースがあります。そちらの考慮も踏まえ環境変数のプラグインを作成しています。
プロジェクトルートに_pluginsディレクトリを作成
jekyllでは_plugins
ディレクトリ内のrubyスクリプトを自動で読み込むように設計されています。
プラグインは主に3種類存在します。
■ ジェネレータ(Generators)
→ 独自のルールでJekyllに追加コンテンツを生成させる必要があるときに利用します。今回はジェネレーターを使ってsite変数に環境変数を設定していきます。
- ArchiveGenerator by Ilkka Laukkanen: このarchive pageを使ってアーカイブを生成する。
- Sitemap.xml Generator by Michael Levin: 利用可能な全postおよびpageを走査して、sitemap.xmlファイルを生成する。
■ コンバータ(Converters)
→ サイトで利用したい新しいマークアップ言語があるときは、独自のコンバータを実装することで利用できるようになります
■ タグ(Tags)
→ 独自のLiquidタグが作成できます。
環境変数をsite変数に格納するスクリプト(environment-variables.rb)を作成
# environment-variables.rb
module Jekyll
class EnvironmentVariablesGenerator < Generator
def generate(site)
site.config['env'] = {}
ENV.each do |key, value|
site.config['env'][key] = value
end
end
end
end
利用方法
環境変数として「GOOGLE_ANALITICS_TRAKING_ID=XXXXXX」を設定した場合、html側では以下のように組み込むことができます。
{{ site.env.GOOGLE_ANALITICS_TRAKING_ID }}
最後に
今後もブログの機能拡張を進めていく予定です。
以下のプラグイン機能も取り込んでいきたいです。
■ ジェネレータ(Generators)
- ArchiveGenerator by Ilkka Laukkanen: このarchive pageを使ってアーカイブを生成する。
- Sitemap.xml Generator by Michael Levin: 利用可能な全postおよびpageを走査して、sitemap.xmlファイルを生成する。
- Full-text search by Pascal Widdershoven: プラグインと少しのJavaScriptを使って、あなたのJekyllサイトに全文テキスト検索を追加する。
■ タグ(Tags)
- Tag Cloud Plugin by Ilkka Laukkanen: タグページにリンクしたタグクラウドを生成する。
- Tweet Tag by Scott W. Bradley : Twitterの短いコードを使ったツイートをサイトに埋め込む(Embedded Tweets)のためのLiquidタグ。
皆さんもプラグインを上手に利用して独自のサイトを構築していきましょう。
プラグインについては こちら を参考にさせて頂きました。