・execで実行したコマンドの終了コードはerror.codeで分かる。
・node.jsのグローバル変数processのメソッドexit()で任意の終了コードを返してcakeを終了することができる。
とりあえずerrorがセットされた場合にerror.codeを引数としてprocess.exit()を叩くようにした。
task 'build', 'compile target files', ->
targetList = targetList.join(' ')
# コンパイルコマンド
cmd ="cat #{targetList} | coffee #{OPTIONS} > #{OUTDIR}/#{TARGET_FILENAME}"
# コンパイル実行
exec cmd, (error, stdout, stderr) ->
util.log(error) if error
util.log(stdout) if stdout
util.log(stderr) if stderr
process.exit(error.code) if error
process.exit(error.code) if error
coffeeコマンドでコンパイルに失敗した場合は終了コードが1にセットされているようなので
これを使って成功か失敗かを判定することができる。