我现在刚刚学习了Rake中的文件任务。我有100个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
有帮助吗?

解决方案

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[...] 也。

其他提示

如何调用此耙子文件任务?

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

耙????

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top