2

我一直在尝试合并我的一些主要是多余的 Rake 文件任务,但没有成功。即使指导我阅读一些关于 rake 规则的文档也会很棒,但我发现的很少。

我发现的所有示例都是以扩展名区分的文件,就我而言,我需要更具体的东西。

file '.../bundle-a.js' => ['a.js','b.js','c.js']

file '.../bundle-b.js' => ['d.js','e.js','f.js']

rule ??? => ??? do |f|
   File.open( f.name, 'w' ) do |of|
       of.write cat(f.prerequisites).concat('SPECIFIC TEXT TO EACH BUNDLE')
   end
end

如果我对 .js => .js 执行规则,则会出现递归错误。如果我查找 /bundle/,它会失败或者我不理解发生的处理。另外,我需要添加有关特定文本的部分,是否有通过规则解决此问题的方法?

4

1 回答 1

0

您可以在模式中使用正则表达式,在依赖项中使用 Procs。Procs 接收文件名作为参数,并应返回文件名或文件名数组。

rule %r{\A.../bundle-(.*)\.js\z} => proc{|fn| required_files_for(fn) } do |f|
  ...
end

如果使用“.js”作为目标,“.js”作为依赖,则意味着可以从自身构建一个js文件,这是一个递归规则。

于 2013-03-15T17:21:08.877 回答