Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
5 changed files
with
175 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,138 @@ | ||
# Basic Rakefile for building jQuery | ||
files = [ "intro", "core", "support", "data", "queue", "event", "selector", "traversing", "attributes", "manipulation", "css", "ajax", "effects", "offset", "dimensions", "outro" ] | ||
prefix = File.dirname( __FILE__ ) | ||
|
||
date = `git log -1 | grep Date: | sed 's/[^:]*: *//'`.gsub(/\n/, "") | ||
version = `cat version.txt`.gsub(/\n/, "") | ||
# Directory variables | ||
src_dir = File.join( prefix, 'src' ) | ||
build_dir = File.join( prefix, 'build' ) | ||
test_dir = File.join( prefix, 'test' ) | ||
|
||
task :default => :jquery | ||
# A different destination directory can be set by | ||
# setting DIST_DIR before calling rake | ||
dist_dir = ENV['DIST_DIR'] || File.join( prefix, 'dist' ) | ||
|
||
task :init do | ||
sh "if test ! -d test/qunit; then git clone git://github.com/jquery/qunit.git test/qunit; fi" | ||
sh "if test ! -d src/sizzle; then git clone git://github.com/jeresig/sizzle.git src/sizzle; fi" | ||
sh "cd src/sizzle && git pull origin master &> /dev/null" | ||
sh "cd test/qunit && git pull origin master &> /dev/null" | ||
base_files = %w{intro core support data queue attributes event selector traversing manipulation css ajax effects offset dimensions outro}.map { |js| File.join( src_dir, "#{js}.js" ) } | ||
|
||
# Sizzle, QUnit and jQuery files/dirs | ||
sizzle_dir = File.join( src_dir, "sizzle" ) | ||
sizzle = File.join( sizzle_dir, "sizzle.js" ) | ||
selector = File.join( src_dir, "selector.js" ) | ||
|
||
qunit_dir = File.join( test_dir, "qunit" ) | ||
qunit = File.join( qunit_dir, "qunit", "qunit.js" ) | ||
|
||
jq = File.join( dist_dir, "jquery.js" ) | ||
jq_min = File.join( dist_dir, "jquery.min.js" ) | ||
|
||
# General Variables | ||
date = `git log -1`[/^Date:\s+(.+)$/, 1] | ||
version = File.read( File.join( prefix, 'version.txt' ) ).strip | ||
|
||
# Build tools | ||
rhino = "java -jar #{build_dir}/js.jar" | ||
minfier = "java -jar #{build_dir}/google-compiler-20091218.jar" | ||
|
||
# Turn off output other than needed from `sh` and file commands | ||
verbose(false) | ||
|
||
# Tasks | ||
task :default => "all" | ||
|
||
desc "Builds jQuery; Tests with JSLint; Minifies jQuery" | ||
task :all => [:jquery, :lint, :min] do | ||
puts "jQuery build complete." | ||
end | ||
|
||
task :jquery => [:init, :selector] do | ||
sh "mkdir -p dist" | ||
desc "Builds jQuery: jquery.js (Default task)" | ||
task :jquery => [:selector, jq] | ||
|
||
sh "cat " + files.map {|file| "src/" + file + ".js"}.join(" ") + | ||
" | sed 's/Date:./&" + date + "/' | " + | ||
" sed s/@VERSION/" + version + "/ > dist/jquery.js" | ||
desc "Builds a minified version of jQuery: jquery.min.js" | ||
task :min => jq_min | ||
|
||
|
||
task :init => [sizzle, qunit] do | ||
sizzle_git = File.join(sizzle_dir, '.git') | ||
qunit_git = File.join(qunit_dir, '.git') | ||
|
||
puts "Updating SizzleJS with latest..." | ||
sh "git --git-dir=#{sizzle_git} pull -q origin master" | ||
|
||
puts "Updating QUnit with latest..." | ||
sh "git --git-dir=#{qunit_git} pull -q origin master" | ||
end | ||
|
||
desc "Removes dist folder, selector.js, and Sizzle/QUnit" | ||
task :clean do | ||
puts "Removing Distribution directory: #{dist_dir}..." | ||
rm_rf dist_dir | ||
|
||
puts "Removing built copy of Sizzle..." | ||
rm_rf selector | ||
|
||
puts "Removing cloned directories..." | ||
rm_rf qunit_dir | ||
rm_rf sizzle_dir | ||
end | ||
|
||
task :selector do | ||
sh "sed '/EXPOSE/r src/sizzle-jquery.js' src/sizzle/sizzle.js > src/selector.js" | ||
desc "Rebuilds selector.js from SizzleJS" | ||
task :selector => [:init, selector] | ||
|
||
desc "Tests built jquery.js against JSLint" | ||
task :lint => jq do | ||
puts "Checking jQuery against JSLint..." | ||
sh "#{rhino} " + File.join(build_dir, 'jslint-check.js') | ||
end | ||
|
||
|
||
# File and Directory Dependencies | ||
directory dist_dir | ||
|
||
file jq => [dist_dir, base_files].flatten do | ||
puts "Building jquery.js..." | ||
|
||
File.open(jq, 'w') do |f| | ||
f.write cat(base_files).gsub(/(Date:.)/, "\\1#{date}" ).gsub(/@VERSION/, version) | ||
end | ||
end | ||
|
||
file jq_min => jq do | ||
puts "Building jquery.min.js..." | ||
|
||
sh "#{minfier} --js #{jq} --warning_level QUIET --js_output_file #{jq_min}" | ||
|
||
min = File.read( jq_min ) | ||
|
||
# Equivilent of "head" | ||
File.open(jq_min, 'w') do |f| | ||
f.write File.readlines(jq)[0..14].join() | ||
f.write min | ||
end | ||
end | ||
|
||
file selector => [sizzle, :init] do | ||
puts "Building selector code from Sizzle..." | ||
|
||
File.open(selector, 'w') do |f| | ||
f.write File.read(sizzle).gsub( | ||
/^.+EXPOSE$\n/, | ||
'\0' + File.read( File.join( src_dir, 'sizzle-jquery.js' )) | ||
).gsub( | ||
/^window.Sizzle.+$\n/, '' | ||
) | ||
end | ||
end | ||
|
||
file sizzle do | ||
puts "Retrieving SizzleJS from Github..." | ||
sh "git clone git://github.com/jeresig/sizzle.git #{sizzle_dir}" | ||
end | ||
|
||
file qunit do | ||
puts "Retrieving QUnit from Github..." | ||
sh "git clone git://github.com/jquery/qunit.git #{qunit_dir}" | ||
end | ||
|
||
|
||
def cat( files ) | ||
files.map do |file| | ||
File.read(file) | ||
end.join('') | ||
end |
0
speed/benchmarker.css
100755 → 100644
Empty file.
0
speed/benchmarker.js
100755 → 100644
Empty file.
0
speed/index.html
100755 → 100644
Empty file.