rakeで単純なファイル変換するためのRakefileテンプレート

使いたい時:

  • wav -> mp3
  • bmp -> jpg
  • coffee -> js

要は大量のファイルを一撃で変換するためのタスクです。
大きなプロジェクトでは*1最終的にひとつのファイルを生成することになるわけですが、
単純なルールで各ファイルを変換するだけなら、複雑な依存関係を記述する必要はないわけで。

RakefileCoffeeScriptJavaScriptコンパイルする場合):

require 'rake/clean'

SRC = FileList["**/*.coffee"]
DST = SRC.ext("js")

CC = "coffee"

CLEAN.include DST

task default: DST

rule ".js" => ".coffee" do |t|
  sh "#{CC} -c #{t.source}"
end

いっつも忘れそうになるのでメモしておきます。
ちなみに rule ディレクティブで引数として渡されている t は
t.name で変換後の名前を取得することができます。
gccなんかを使うときに gcc -c #{t.source} -o #{t.name} なんかはよく見かける断片ですね。

参考: http://www2s.biglobe.ne.jp/~idesaku/sss/tech/rake/

*1:例えば ./configure && make && sudo make install が必要なプロジェクト。