0

私は今、Rake でのファイル タスクについて学んでいます。私は何百もの JavaScript ソース ファイルを持っており、それらは 10 個ほどのファイルに連結されます。この種のマッピングは、ファイル タスクを使用してインテリジェントに行うことができます。すべてのファイルを指定する必要があるようです。

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

例えば、

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

2 に答える 2

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(私の例では、最初の引数はファイルのリストで、2 番目の引数は宛先ファイルです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[...]ます。

于 2010-12-08T18:30:03.933 に答える
0

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

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

すくい????

于 2010-12-09T07:32:34.717 に答える