ボックス

ボックスは指定されたフォルダ内のファイルを処理するために使用されるコンテナです。Hexoでは2種類のボックスが使用されます。hexo.sourcehexo.themeです。前者はsourceフォルダを処理するために、後者はthemeフォルダを処理するために使用されます。

ファイルの読み込み

ボックスはファイルを読み込むためにprocesswatchの2つの方法を提供します。processはフォルダ内のすべてのファイルを読み込みます。watchも同様の操作を行いますが、ファイルの変更の監視も開始します。

box.process().then(function(){
// ...
});

box.watch().then(function(){
// 後で box.unwatch() を呼び出して監視を停止できます。
});

パスマッチング

ボックスはパスマッチングのための多くの方法を提供します。正規表現、関数、またはExpressスタイルのパターン文字列を使用できます。例えば:

posts/:id => posts/89
posts/*path => posts/2015/title

詳細についてはutil.Patternを参照してください。

プロセッサ

プロセッサはボックスの重要な要素であり、ファイルを処理するために使用されます。上記のパスマッチングを使用して、プロセッサが何を処理すべきか、正確に指定できます。新しいプロセッサをaddProcessorメソッドで登録します。

box.addProcessor('posts/:id', function(file){
//
});

ボックスはマッチしたファイルの内容をプロセッサに渡します。この情報はコールバックのfile引数から直接読むことができます:

属性 説明
source ファイルの完全なパス
path ファイルのボックスまでの相対パス
type ファイルのタイプ。値はcreate, update, skip, deleteがあります。
params パスマッチングからの情報。

ボックスはファイルIOを自分で行う必要がないようにいくつかのメソッドも提供しています。

メソッド 説明
read ファイルを読み込む
readSync 同期的にファイルを読み込む
stat ファイルのステータスを読み込む
statSync 同期的にファイルのステータスを読み込む
render ファイルをレンダリングする
renderSync 同期的にファイルをレンダリングする