题
我现在刚刚学习了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
耙????
不隶属于 StackOverflow