Cakefileとは
Cakefileは、CoffeeScriptをビルドする際にビルドの指定などをするためのファイルです。
詳しくはこちらをご覧下さい。
Cakefileで実現したいこと
今回は以下のような構成を想定しています。
| js – | script.js |
| coffee – | ***.coffee |
| ***.coffee |
coffeeフォルダの複数のファイルをビルドし、同階層のjsフォルダにCoffeeScriptをまとめたscript.jsを作成する。
Cakefileの記述方法
Cakefileは『Cakefile』と拡張子もなく、CoffeeScriptのある、coffee/フォルダに作成します。
以下のように記述します。
sys = require 'sys'
fs = require 'fs'
exec = require('child_process').exec
util = require 'util'
# 設定
COMMAND = 'coffee'
OPTIONS = '-cbj'
SRCDIR = '.' # *.coffeeファイルがあるディレクトリへのパス
OUTDIR = '../js' # *.jsファイルの保存先
TARGET_FILENAME = 'script.js'
# coffeeフォルダ内のCoffeeScriptを列挙
targetList = []
for f in fs.readdirSync SRCDIR
targetList.push RegExp.$1 if f.match /^(\w+)\.coffee$/
task 'build', 'compile target files', ->
targetList = targetList.join(' ')
# コンパイルオプション
option = "#{OPTIONS} #{OUTDIR}/#{TARGET_FILENAME} #{targetList}"
# コンパイル実行
util.log('コンパイルします')
exec "coffee #{option}", (error, stdout, stderr) ->
util.log(error) if error
util.log(stdout) if stdout
util.log(stderr) if stderr
if error
util.log('失敗しました')
else
util.log('成功しました')
このように記入し、ビルドすればcoffeeファルダ内の全てのCoffeeScriptをまとめて、jsフォルダ内にscript.jsとして作成できます。
他にもアレンジが効くので、色々と自分に合わせて使用してみてください。
