Grunt で Hogan.js のテンプレートをコンパイル

CoffeeScript と Sass のコンパイルを Grunt で行うようにしたら、 ついでに Hogan.js のテンプレートもコンパイルしたくなるのは仕方ないよね。 人として。

Grunt のタスクをインストール

Grunt の contrib タスクには Hogan.js 用のタスクがあるので、npm でインストール。

npm install grunt-contrib-hogan

EJS から Hogan.js に移行した理由の1つが、このタスクの存在だったり。

Gruntfile 修正

module.exports = function(grunt) {
  grunt.initConfig({
    hogan: {
      publish: {
        options: {
          namespace: "HoganTemplates",
          defaultName: function(filename) {
            return filename.split(".")[0];
          }
        },
        files: {
          "public/assets/template.js": [
            "app/assets/javascripts/backbone/templates/**/*.mustache"
          ]
        }
      }
    }
  });

  grunt.loadNpmTasks("grunt-contrib-hogan");
};

namespace は、JavaScript/CoffeeScript からテンプレートにアクセスするときに使うオブジェクトの名前。HoganTemplates にしてみた。

defaultName は、HoganTemplates からテンプレートを取得するとき指定するキーの命名規則。

いざコンパイル

grunt hogan

を実行すると Hogan.js のテンプレートをコンパイルして、 public/assets/templates.js を出力できた。

Rails のアセットパイプラインから Grunt に移行する準備が着々と進んでいるな。