BLOG::はるかさん

はるかさん のブログです。近況情報や技術的な話題など。

Gulpでplayのアセットファイルを生成できるプラグインをつくった

最近仕事でplay frameworkを使っているのだけど、playにはアセットファイルをコンパイルしてくれるsbt-webというのがある。これは便利っぽいのだけど、いままでnpmの世界で育った人間にはちょっと困った。だいたい、gulp-なんとかってプラグインではなくsbt-なんとかってプラグインを探したり、試したり、つくったりしないといけないのはつらい。

playはpublicディレクトリの下にアセットファイルをおけば良いのだが、gzipしたファイルとかmd5ファイルとかを用意しておけば、それを良い感じに使ってくれる。このあたりは下の記事が詳しい。

d.hatena.ne.jp

gulpでのやり方も書いてあったんだけど、面倒なのでプラグインにしておいた。

www.npmjs.com

Gulpfile.jsにはこんなかんじでかけばよい。

var gulp = require('gulp');
var playAssets = require('gulp-play-assets');
var gzip = require('gulp-gzip');
 
gulp.task('build', function() {
  gulp.src('assets/**')
    .pipe(playAssets())
    .pipe(gulp.dest('./public')); // output unzipped files 
    .pipe(gzip({ append: true }))
    .pipe(gulp.dest('./public')); // output zipped files 

これでちゃんとgzipしたファイルもできて、playもそれを使ってくれる。あとはsbt起動したときにgulpも起動するようにしておけば便利だと思う(やったことないけど)。

はじめてのGulpプラグインなので皆さんのコントリビュートをお待ちしております。