date. 2012/12/5

category. JavaScript

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として作成できます。

他にもアレンジが効くので、色々と自分に合わせて使用してみてください。

参考サイト

関連記事