-
Notifications
You must be signed in to change notification settings - Fork 20.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
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 | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,26 +1,138 @@ | |||
# Basic Rakefile for building jQuery | prefix = File.dirname( __FILE__ ) | ||
files = [ "intro", "core", "support", "data", "queue", "event", "selector", "traversing", "attributes", "manipulation", "css", "ajax", "effects", "offset", "dimensions", "outro" ] | |||
|
|
||
date = `git log -1 | grep Date: | sed 's/[^:]*: *//'`.gsub(/\n/, "") | # Directory variables | ||
version = `cat version.txt`.gsub(/\n/, "") | 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 | 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" ) } | ||
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" | # Sizzle, QUnit and jQuery files/dirs | ||
sh "cd src/sizzle && git pull origin master &> /dev/null" | sizzle_dir = File.join( src_dir, "sizzle" ) | ||
sh "cd test/qunit && git pull origin master &> /dev/null" | 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 | end | ||
|
|
||
task :jquery => [:init, :selector] do | desc "Builds jQuery: jquery.js (Default task)" | ||
sh "mkdir -p dist" | task :jquery => [:selector, jq] | ||
|
|
||
sh "cat " + files.map {|file| "src/" + file + ".js"}.join(" ") + | desc "Builds a minified version of jQuery: jquery.min.js" | ||
" | sed 's/Date:./&" + date + "/' | " + | task :min => jq_min | ||
" sed s/@VERSION/" + version + "/ > dist/jquery.js" |
|
||
|
|||
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 | end | ||
|
|
||
task :selector do | desc "Rebuilds selector.js from SizzleJS" | ||
sh "sed '/EXPOSE/r src/sizzle-jquery.js' src/sizzle/sizzle.js > src/selector.js" | 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 | 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 |
Empty file.
Empty file.
Empty file.