使用一款自动化的构建工具,已经成为专业的JS程序员的必备技能之一。在国内,每个前端团队都学会了用 Ant 来自动生成一系列构建的任务。但是由于 Ant 对 XML的依赖,这一大关键缺点,使得 Ant 脚本既难写又难读,也难进行重构,甚至难进行 diff。所以,rake(用Ruby编程的构建工具)越来越流行了。
下面的代码是合并多个 JS 文件的 rake 任务:
namespace :js do
desc "合并多个 JS 文件"
task :concatenate do
filename3 = "E:\\all.js"
logfile = File.new(filename3, 'w');
joinFiles = ["E:\\a.js", "E:\\b.js"];
for files in joinFiles
if File.exists?(files)
file = File.new(files, 'r')
file.each_line do |line1|
logfile.puts(line1)
end
end
end
end
end
如何执行 rake呢?
假如 Ruby 源代码文件为 build.rb,那么在 windows 命令行中输入命令:
rake –f build.rb js:concatenate
然后回车。
可能就会有人问了:可以结合 Google Closure Compiler 使用来进行代码压缩吗?答案是肯定的!
下面是带传参的调用 GCC 的 rake 任务:
desc "用 Google Closure Compiler 进行编译"
task :gcc, :compiled_path, :needs => :concatenate do |t, args|
require 'rubygems'
require 'win32/open3'
cmd = "java -jar D:\\compiler\\compiler.jar --js " + concatenateFilename + " --js_output_file " + args.compiled_path
Open3.popen3(cmd)
end
在 windows 命令行中输入命令:
rake –f build.rb "js:gcc[E:\all-min.js]"
然后回车。
对JS程序员来说,使用rake的唯一缺点是学习Ruby的成本了。所以,用nodeJS来实现相同的功能也是在国内前端界同行们越来越流行的趋势。
(完)