我们有一个rails应用程序,我们使用webpack,它需要多个javascript文件并输出一个单独的javascript文件。运行需要很长时间,我想为此创建一个rake任务。但是对于耙子来说,我需要一些帮助。
我想使用rake的构建系统,这样我就可以自动检查输入和输出.js文件之间的时间戳。因此,如果任何输入文件比输出文件更新,它将执行webpack。否则,如果输入文件的 none 比输出文件新,则该任务不执行任何操作。
在MSBuild中,这是一个很快的闪光灯。但在Ruby中,我有点迷失。
我猜它可能包括编写文件任务,循环并使一个输出文件依赖于输入。或者我应该使用这样的规则吗?
outputfile = "~/foo.js"
inputfiles = Dir["~/**/*.js"]
rule outputfile => inputfiles do
bin/webpack bla bla bla
end
答案 0 :(得分:1)
您可以使用Rake::FileList
来实现此目的。像这样:
file "foo.js" => Rake::FileList["**/*.js"] do
...
end
而且,我不确定rake是否允许在路径中使用~
,我相信需要完整的路径。或者只使用"#{Dir.home}/foo.js"
规则。
然后使用:
调用它rake ~/foo.js
当你有多个输出时:
task :build => Rake::FileList["config1.xml", "config2.xml"] do
# all that stuff is run only when the FileList above is changed
touch 'foo1.js'
touch 'foo2.js'
sh "compile foo3.js"
sh "do-anything-else foo4.js"
end
使用以下方式运行:
rake build