在build.rake文件中,我有一个包含 JavaScript 文件名称的数组:
JS_FROM_INDEX=`./bin/extract_files -e js index.html`.split
它包含这些文件:
js/config.js
js/vendor/dollar.js
js/vendor/ejs.min.js
js/utils.js
......
js/Viewport.js
然后有一条规则(这是我的猜测,因为我对 ruby 完全一无所知)告诉如何制作build/app.js文件:即首先获取js/config.js文件,然后附加所有其他文件上面的数组:
file DEST + '/app.js' => [DEST]+JS_FROM_INDEX.dup << 'index.html' << DEST do |t|
sh "cat js/config.js > #{t.name}"
sh "cat #{JS_FROM_INDEX.reject{|f| f =~ /\/config\.js/ }.join(" ")} | bin/yuicompressor --type js >> #{t.name}"
end
它工作正常,但现在我发现js/utils.js应该在一开始,甚至在js/config.js之前。
所以我的问题是:
有没有一种对JS_FROM_INDEX数组进行排序的好方法,以便将js/utils.js和js/config.js移动到它的第一个位置?这可以作为oneliner(即附加到上面的.split调用的一些代码)来完成吗?
更新:
微薄建议(谢谢!)代码:
scripts.unshift("js/config.js") if scripts.delete("js/config.js");
scripts.unshift("js/utils.js") if scripts.delete("js/utils.js");
要将其集成到 Rakefile 中,我认为我需要再引入 2 个变量:
JS_FROM_INDEX=`./bin/extract_files -e js index.html`.split
JS_SORTED_1=......use JS_FROM_INDEX somehow....
JS_SORTED_2=......use JS_FROM_SORTED_1 somehow....
file DEST + '/app.js' => [DEST]+JS_SORTED_2.dup << 'index.html' << DEST do |t|
sh "cat #{JS_FROM_INDEX.reject{|f| f =~ /\/config\.js/ }.join(" ")} | bin/yuicompressor --type js >> #{t.name}"
end
关于如何连接上面的点有什么想法吗?