LoginSignup
1
2

More than 5 years have passed since last update.

Assembleのプラグインの作り方についてメモ

Posted at

Assembleのプラグインを作ろうとした時のメモ。
v0.6系は開発中なので、安定版のv0.4系のみに対応する。

プラグインを利用する場合

作り方以前に、assembleのプラグインはどうやって使うのか。
assemble-middleware-rssREADMEを参考に、プラグインを利用する際に必要なことは以下の2つだけ。

  1. npm install
  2. Gruntfileのassembleでプラグインの追加

プラグインをインストールして、Gruntfileにプラグインの記述を追加すれば使えるようになる。
assemble-middleware-rssの場合、npmをインストールして

$ npm i --save-dev assemble-middleware-rss

Gruntfileにプラグインの設定を追加するだけ。

assemble: {
  options: {
    plugins: [
      'assemble-middleware-rss'
    ],
    rss: {
      title: 'rss title',
      description: 'rss description'
    }
  }
}

プラグインの作り方

一般的なnpmの作り方とほとんど一緒。Node.js - 3分でできるnpmモジュール - Qiitaのような感じで、最終的にnpm publishする。

$ mkdir assemble-index-json
$ cd assemble-index-json
$ npm init
$ touch index.js

... # プラグインの中身作る

$ npm publish

index.jsでプラグインのモジュールを作る。

module.exports = function (params, cb) {
  // ここにプラグインの処理を書く

  cb();// 処理の最後に第二引数のコールバック関数を呼び出す
};

第一引数には、gruntassembleのオブジェクトが格納されたオブジェクトが入ってるので、Gruntfileassembleのタスクに設定した内容は、

params.assemble

の中から取得できる。
プラグイン独自のオプションがある場合は、params.assemble以下に独自で定義したオプションがあるので、そこから設定されているオプションの値を取り出す。

実行するタイミング

プラグインの処理をassembleがページを生成する過程のどのタイミングで行うのか、選べるようになってる。
ドキュメントは見当たらないけど、assembleのソースコードからして、以下のいずれかのタイミングでプラグインの処理を実行できるぽい。

  • options:pre:configuration : assembleのオプション等を読み込む直前
  • options:post:configuration : assembleのオプション等を読み込んだ直後
  • assemble:pre:layout : layoutのhbsを読み込む直前
  • assemble:post:layout : layoutのhbsを読み込んだ直後
  • assemble:pre:partials : partialのhbsを読み込む直前
  • assemble:post:partials : partialのhbsを読み込んだ直後
  • assemble:pre:data : dataを読み込む直前
  • assemble:post:data : dataを読み込んだ直後
  • assemble:pre:pages : pageを読み込む直前
  • assemble:post:pages : pageを読み込んだ直後
  • render:pre:pages : ページを生成する直前
  • render:post:pages : ページを生成した直後

例えば、以下のようにstageに値を渡せば、

module.exports.options = {
  stage: 'render:post:pages'
};

全てのページが生成された後のタイミングでプラグインの処理を実行するように制御できる。

v0.6.0

開発中のv0.6.0は、assemble単体で動かせるようになる予定なので、gruntのプラグインが前提のv0.4.xとはだいぶ変わるようで、プラグインの書き方も違ってるので、v0.6.0が正式リリースされたらプラグインのコードをv0.6.0対応に書き換える必要がある。

Links

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2