2010-12-08 6 views
0

私は今、レイクのファイルタスクについて学んでいます。私は100以上のjavascriptソースファイルを持っており、10個程度のファイルに連結されています。この種のマッピングは、ファイルタスクを使ってインテリジェントに行うことができます。すべてのファイルを指定する必要があるようです。ファイルの100でファイルをレイクする

これらのjavascriptファイルをすべて再帰的に検索し、右側の連結ファイルと比較するファイルタスクを効率的に作成する方法はありますか?連結部分はトリッキーなステップであり、私はそれをルビーで手に入れることができるまで、現時点でカスタムビルドツールによって行われています。

例えば、

/a.js 
/c.js   -----------> base.js 
/geo/b.js 
/geo/c.js  -----------> geo.js 
/mod/d.js 
/mod/e.js  -----------> mod.js 

答えて

1
file 'base.js' => Dir['*.js'] do |t| 
    concatenate t.prerequisites, t.name 
end 

file 'geo.js' => Dir['geo/*.js'] do |t| 
    concatenate t.prerequisites, t.name 
end 

というように、あなたは明らかに、concatenate方法を自分で実装する必要がありますが(私の例では、最初の引数は、ファイルのリストであり、第二の目的地でありますファイル、例えばgeo.js)。作成されたすべてのファイルがディレクトリにちなんで命名されている場合は、このような何か行うことができます。

%w(geo mod xyz abc).each do |module| 
    file "#{module}.js" => Dir["#{module}/*.js"] do |t| 
    concatenate t.prerequisites, t.name 
    end 
end 

をディレクトリは何とかグロビングできる場合、あなたはあまりにもDir[...]とディレクトリ名のリストを置き換えることによって、それがさらに動的に作ることができます。

+0

私はそれがA..Zソースファイルに対してa..nモジュールファイルを確認することは実現不可能だった実現するために始めました。私はすべてのターゲットファイルとすべてのソースファイルを指定せずにこれを書くことができることを期待していました...マッピングのいくつかの並べ替え。 – Drew

0

このレーキファイルタスクを呼び出す方法は?

%w(geo mod xyz abc).each do |module| 
    file "#{module}.js" => Dir["#{module}/*.js"] do |t| 
    # some code 
    end 
end 

レーキ????

+0

'file:'タスク定義(最後の最後の直前)の下に 'task:everything =>"#{module} .js "を追加します。それでは、 'rake everything 'ですべてを動かすことができます。 – Theo

関連する問題