Replace build system with a faster new one that uses Node and UglifyJS and generates smaller minified files. Also removes builds through rake/ant since having 3 different build systems was too much to maintain (make was the only one consistently kept up-to-date). Fixes #7973.
This commit is contained in:
parent
9c76ac4f6d
commit
d503845d0c
15
Makefile
15
Makefile
|
@ -7,11 +7,8 @@ BUILD_DIR = build
|
||||||
PREFIX = .
|
PREFIX = .
|
||||||
DIST_DIR = ${PREFIX}/dist
|
DIST_DIR = ${PREFIX}/dist
|
||||||
|
|
||||||
RHINO ?= java -jar ${BUILD_DIR}/js.jar
|
JS_ENGINE ?= node
|
||||||
|
COMPILER = ${JS_ENGINE} ${BUILD_DIR}/uglify.js --unsafe
|
||||||
CLOSURE_COMPILER = ${BUILD_DIR}/google-compiler-20100917.jar
|
|
||||||
|
|
||||||
MINJAR ?= java -jar ${CLOSURE_COMPILER}
|
|
||||||
|
|
||||||
BASE_FILES = ${SRC_DIR}/core.js\
|
BASE_FILES = ${SRC_DIR}/core.js\
|
||||||
${SRC_DIR}/support.js\
|
${SRC_DIR}/support.js\
|
||||||
|
@ -93,17 +90,13 @@ ${SRC_DIR}/selector.js: ${SIZZLE_DIR}/sizzle.js
|
||||||
|
|
||||||
lint: ${JQ}
|
lint: ${JQ}
|
||||||
@@echo "Checking jQuery against JSLint..."
|
@@echo "Checking jQuery against JSLint..."
|
||||||
@@${RHINO} build/jslint-check.js
|
@@${JS_ENGINE} build/jslint-check.js
|
||||||
|
|
||||||
min: ${JQ_MIN}
|
min: ${JQ_MIN}
|
||||||
|
|
||||||
${JQ_MIN}: ${JQ}
|
${JQ_MIN}: ${JQ}
|
||||||
@@echo "Building" ${JQ_MIN}
|
@@echo "Building" ${JQ_MIN}
|
||||||
|
@@${COMPILER} ${JQ} > ${JQ_MIN}
|
||||||
@@head -15 ${JQ} > ${JQ_MIN}
|
|
||||||
@@${MINJAR} --js ${JQ} --warning_level QUIET --js_output_file ${JQ_MIN}.tmp
|
|
||||||
@@cat ${JQ_MIN}.tmp >> ${JQ_MIN}
|
|
||||||
@@rm -f ${JQ_MIN}.tmp
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@@echo "Removing Distribution directory:" ${DIST_DIR}
|
@@echo "Removing Distribution directory:" ${DIST_DIR}
|
||||||
|
|
95
README.md
95
README.md
|
@ -1,85 +1,64 @@
|
||||||
[jQuery](http://jquery.com/) - New Wave Javascript
|
[jQuery](http://jquery.com/) - New Wave Javascript
|
||||||
================================
|
==================================================
|
||||||
|
|
||||||
What you need to build your own jQuery
|
What you need to build your own jQuery
|
||||||
---------------------------------------
|
--------------------------------------
|
||||||
* Make sure that you have Java installed (if you want to build a minified version of jQuery).
|
|
||||||
If not, [go to this page](http://java.sun.com/javase/downloads/index.jsp) and download "Java Runtime Environment (JRE) 5.0"
|
|
||||||
|
|
||||||
Build Options
|
In order to build jQuery, you need to have GNU make 3.8 or later, Node.js 0.2 or later, and git 1.7 or later.
|
||||||
--------------
|
(Earlier versions might work OK, but are not tested.)
|
||||||
|
|
||||||
You now have **three** options for building jQuery:
|
Windows users have two options:
|
||||||
|
|
||||||
* **`make`**: If you have access to common UNIX commands (like `make`, `mkdir`, `rm`, `cat`, and `echo`) then simply type `make` to build all the components.
|
1. Install [msysgit](https://code.google.com/p/msysgit/) (Full installer for official Git),
|
||||||
|
[GNU make for Windows](http://gnuwin32.sourceforge.net/packages/make.htm), and a
|
||||||
|
[binary version of Node.js](http://node-js.prcn.co.cc/). Make sure all three packages are installed to the same
|
||||||
|
location (by default, this is C:\Program Files\Git).
|
||||||
|
2. Install [Cygwin](http://cygwin.com/) (remember to install the git and make packages) and follow the
|
||||||
|
[Node.js build instructions](https://github.com/ry/node/wiki/Building-node.js-on-Cygwin-%28Windows%29) or install
|
||||||
|
the [binary version of Node.js](http://node-js.prcn.co.cc/).
|
||||||
|
|
||||||
* **`rake`**: If you have Ruby Rake installed (on either Windows or UNIX/Linux), you can simply type `rake` to build all the components.
|
Mac OS users should install Xcode (comes on your Mac OS install DVD, or downloadable from
|
||||||
|
[Apple's Xcode site](http://developer.apple.com/technologies/xcode.html)) and
|
||||||
|
[http://mxcl.github.com/homebrew/](Homebrew). Once Homebrew is installed, run `brew install git` to install git,
|
||||||
|
and `brew install node` to install Node.js.
|
||||||
|
|
||||||
|
Linux/BSD users should use their appropriate package managers to install make, git, and node, or build from source
|
||||||
|
if you swing that way. Easy-peasy.
|
||||||
|
|
||||||
* **`ant`**: If you have Ant installed (or are on Windows and don't have access to make). You can download Ant from here: [http://ant.apache.org/bindownload.cgi].
|
|
||||||
|
|
||||||
How to build your own jQuery
|
How to build your own jQuery
|
||||||
-----------------------------
|
----------------------------
|
||||||
|
|
||||||
*Note: If you are using either `rake` or `ant`, substitute your chosen method in place of `make` in the examples below. They work identically for all intents and purposes. Quick reference is also available for `rake` by typing `rake -T` in the `jquery` directory.*
|
First, clone a copy of the main jQuery git repo by running `git clone git://github.com/jquery/jquery.git`.
|
||||||
|
|
||||||
In the main directory of the distribution (the one that this file is in), type
|
Then, to get a complete, minified, jslinted version of jQuery, simply `cd` to the `jquery` directory and type
|
||||||
the following to make all versions of jQuery:
|
`make`. If you don't have Node installed and/or want to make a basic, uncompressed, unlinted version of jQuery, use
|
||||||
|
`make jquery` instead of `make`.
|
||||||
|
|
||||||
make
|
The built version of jQuery will be put in the `dist/` subdirectory.
|
||||||
|
|
||||||
*Here are the individual items that are buildable from the Makefile:*
|
To remove all built files, run `make clean`.
|
||||||
|
|
||||||
make init
|
|
||||||
|
|
||||||
Pull in all the external dependencies (QUnit, Sizzle) for the project.
|
|
||||||
|
|
||||||
make jquery
|
|
||||||
|
|
||||||
The standard, uncompressed, jQuery code.
|
|
||||||
Makes: `./dist/jquery.js`
|
|
||||||
|
|
||||||
make min
|
|
||||||
|
|
||||||
A compressed version of jQuery (made the Closure Compiler).
|
|
||||||
Makes: `./dist/jquery.min.js`
|
|
||||||
|
|
||||||
make lint
|
|
||||||
|
|
||||||
Tests a build of jQuery against JSLint, looking for potential errors or bits of confusing code.
|
|
||||||
|
|
||||||
make selector
|
|
||||||
|
|
||||||
Builds the selector library for jQuery from Sizzle.
|
|
||||||
Makes: `./src/selector.js`
|
|
||||||
|
|
||||||
Finally, you can remove all the built files using the command:
|
|
||||||
|
|
||||||
make clean
|
|
||||||
|
|
||||||
Building to a different directory
|
Building to a different directory
|
||||||
----------------------------------
|
---------------------------------
|
||||||
|
|
||||||
If you want to build jQuery to a directory that is different from the default location, you can...
|
If you want to build jQuery to a directory that is different from the default location, you can specify the PREFIX
|
||||||
|
directory: `make PREFIX=/home/jquery/test/ [command]`
|
||||||
|
|
||||||
**Make only:** Specify the PREFIX directory, for example:
|
With this example, the output files would end up in `/home/jquery/test/dist/`.
|
||||||
|
|
||||||
make PREFIX=/home/john/test/ [command]
|
|
||||||
|
|
||||||
With this example, the output files would be contained in `/home/john/test/dist/`
|
Troubleshooting
|
||||||
|
---------------
|
||||||
|
|
||||||
**Rake only:** Define the DIST_DIR directory, for example:
|
Sometimes, the various git repositories get into an inconsistent state where builds don't complete properly
|
||||||
|
(usually this results in the jquery.js or jquery.min.js being 0 bytes). If this happens, run `make clean`, then
|
||||||
|
run `make` again.
|
||||||
|
|
||||||
rake DIST_DIR=/home/john/test/ [command]
|
|
||||||
|
|
||||||
With this example, the output files would be contained in `/home/john/test/`
|
|
||||||
|
|
||||||
*In both examples, `[command]` is optional.*
|
|
||||||
|
|
||||||
**Ant only:** You cannot currently build to another directory when using Ant.
|
|
||||||
|
|
||||||
Questions?
|
Questions?
|
||||||
----------
|
----------
|
||||||
|
|
||||||
If you have any questions, please feel free to ask them on the Developing jQuery Core
|
If you have any questions, please feel free to ask on the
|
||||||
forum, which can be found here:
|
[Developing jQuery Core forum](http://forum.jquery.com/developing-jquery-core) or in #jquery on irc.freenode.net.
|
||||||
[http://forum.jquery.com/developing-jquery-core](http://forum.jquery.com/developing-jquery-core)
|
|
||||||
|
|
162
Rakefile
162
Rakefile
|
@ -1,162 +0,0 @@
|
||||||
prefix = File.dirname( __FILE__ )
|
|
||||||
|
|
||||||
# Directory variables
|
|
||||||
src_dir = File.join( prefix, 'src' )
|
|
||||||
build_dir = File.join( prefix, 'build' )
|
|
||||||
test_dir = File.join( prefix, 'test' )
|
|
||||||
|
|
||||||
# A different destination directory can be set by
|
|
||||||
# setting DIST_DIR before calling rake
|
|
||||||
dist_dir = ENV['DIST_DIR'] || File.join( prefix, 'dist' )
|
|
||||||
|
|
||||||
base_files = %w{
|
|
||||||
intro
|
|
||||||
core
|
|
||||||
support
|
|
||||||
data
|
|
||||||
queue
|
|
||||||
attributes
|
|
||||||
event
|
|
||||||
selector
|
|
||||||
traversing
|
|
||||||
manipulation
|
|
||||||
css
|
|
||||||
ajax
|
|
||||||
ajax/jsonp
|
|
||||||
ajax/script
|
|
||||||
ajax/xhr
|
|
||||||
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-20100917.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
|
|
||||||
|
|
||||||
desc "Builds jQuery: jquery.js (Default task)"
|
|
||||||
task :jquery => [:selector, jq]
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
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/, date).
|
|
||||||
gsub(/@VERSION/, version).
|
|
||||||
gsub(/.function..jQuery...\{/, '').
|
|
||||||
gsub(/\}...jQuery..;/, '')
|
|
||||||
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
|
|
132
build.xml
132
build.xml
|
@ -1,132 +0,0 @@
|
||||||
<project name="jQuery" default="all" basedir=".">
|
|
||||||
|
|
||||||
<loadfile property="version" srcfile="version.txt" />
|
|
||||||
<property name="PREFIX" value="." />
|
|
||||||
<property description="Folder for jquery and min target" name="dist" value="${PREFIX}/dist" />
|
|
||||||
|
|
||||||
<property name="JQ" value="${dist}/jquery.js" />
|
|
||||||
<property name="JQ_MIN" value="${dist}/jquery.min.js" />
|
|
||||||
|
|
||||||
<loadfile property="sizzle-exports" srcfile="src/sizzle-jquery.js" />
|
|
||||||
|
|
||||||
<available property="qunit" file="test/qunit" />
|
|
||||||
<available property="sizzle" file="src/sizzle" />
|
|
||||||
|
|
||||||
<target name="all" depends="jquery,lint,min" />
|
|
||||||
|
|
||||||
<target name="qunit-clone" unless="qunit">
|
|
||||||
<exec executable="git" outputproperty="git-qunit" >
|
|
||||||
<arg line="clone git://github.com/jquery/qunit.git test/qunit" />
|
|
||||||
</exec>
|
|
||||||
<echo message="git clone qunit: ${git-qunit}" />
|
|
||||||
</target>
|
|
||||||
<target name="qunit-pull" if="qunit">
|
|
||||||
<exec executable="git" outputproperty="git-qunit" dir="test/qunit" >
|
|
||||||
<arg line="pull origin master" />
|
|
||||||
</exec>
|
|
||||||
<echo message="git pull sizzle: ${git-qunit}" />
|
|
||||||
</target>
|
|
||||||
<target name="sizzle-clone" unless="sizzle">
|
|
||||||
<exec executable="git" outputproperty="git-sizzle" >
|
|
||||||
<arg line="clone git://github.com/jeresig/sizzle.git src/sizzle" />
|
|
||||||
</exec>
|
|
||||||
<echo message="git clone sizzle: ${git-sizzle}" />
|
|
||||||
</target>
|
|
||||||
<target name="sizzle-pull" if="sizzle">
|
|
||||||
<exec executable="git" outputproperty="git-sizzle" dir="src/sizzle" >
|
|
||||||
<arg line="pull origin master" />
|
|
||||||
</exec>
|
|
||||||
<echo message="git pull sizzle: ${git-sizzle}" />
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="init" depends="qunit-clone,qunit-pull,sizzle-clone,sizzle-pull" />
|
|
||||||
|
|
||||||
<target name="selector" depends="init" description="Builds the selector library for jQuery from Sizzle.">
|
|
||||||
<copy file="src/sizzle/sizzle.js" tofile="src/selector.js" overwrite="true" />
|
|
||||||
<replaceregexp match="// EXPOSE(.*) " replace="// EXPOSE\1 ${sizzle-exports}" file="src/selector.js" />
|
|
||||||
<replaceregexp match="window.Sizzle(.*) " replace="" file="src/selector.js" />
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="jquery" depends="init,selector" description="Main jquery build, concatenates source files and replaces @VERSION">
|
|
||||||
<echo message="Building ${JQ}" />
|
|
||||||
<mkdir dir="${dist}" />
|
|
||||||
<concat destfile="${JQ}">
|
|
||||||
<fileset file="src/intro.js" />
|
|
||||||
<fileset file="src/core.js" />
|
|
||||||
<fileset file="src/support.js" />
|
|
||||||
<fileset file="src/data.js" />
|
|
||||||
<fileset file="src/queue.js" />
|
|
||||||
<fileset file="src/attributes.js" />
|
|
||||||
<fileset file="src/event.js" />
|
|
||||||
<fileset file="src/selector.js" />
|
|
||||||
<fileset file="src/traversing.js" />
|
|
||||||
<fileset file="src/manipulation.js" />
|
|
||||||
<fileset file="src/css.js" />
|
|
||||||
<fileset file="src/ajax.js" />
|
|
||||||
<fileset file="src/ajax/jsonp.js" />
|
|
||||||
<fileset file="src/ajax/script.js" />
|
|
||||||
<fileset file="src/ajax/xhr.js" />
|
|
||||||
<fileset file="src/effects.js" />
|
|
||||||
<fileset file="src/offset.js" />
|
|
||||||
<fileset file="src/dimensions.js" />
|
|
||||||
<fileset file="src/outro.js" />
|
|
||||||
</concat>
|
|
||||||
<replaceregexp match="@VERSION" replace="${version}" flags="g" byline="true" file="${JQ}" />
|
|
||||||
<exec executable="git" outputproperty="date">
|
|
||||||
<arg line="log -1 --pretty=format:%ad" />
|
|
||||||
</exec>
|
|
||||||
<replaceregexp match="(\(\s*function\s*\(\s*jQuery\s*\)\s*\{)|(\}\s*\)\s*\(\s*jQuery\s*\)\s*;)" flags="g" replace="" file="${JQ}" />
|
|
||||||
<replaceregexp match="@DATE" replace="${date}" file="${JQ}" />
|
|
||||||
<echo message="${JQ} built." />
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="lint" depends="jquery" description="Check jQuery against JSLint">
|
|
||||||
<exec executable="java">
|
|
||||||
<arg line="-jar build/js.jar build/jslint-check.js" />
|
|
||||||
</exec>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="min" depends="jquery" description="Remove all comments and whitespace, no compression, great in combination with GZip">
|
|
||||||
<echo message="Building ${JQ_MIN}" />
|
|
||||||
<apply executable="java" parallel="false" verbose="true" dest="${dist}">
|
|
||||||
<fileset dir="${dist}">
|
|
||||||
<include name="jquery.js" />
|
|
||||||
</fileset>
|
|
||||||
<arg line="-jar" />
|
|
||||||
<arg path="build/google-compiler-20100917.jar" />
|
|
||||||
<arg value="--warning_level" />
|
|
||||||
<arg value="QUIET" />
|
|
||||||
<arg value="--js_output_file" />
|
|
||||||
<targetfile />
|
|
||||||
<arg value="--js" />
|
|
||||||
<mapper type="glob" from="jquery.js" to="tmpmin" />
|
|
||||||
</apply>
|
|
||||||
<concat destfile="${JQ_MIN}">
|
|
||||||
<filelist files="${JQ}, ${dist}/tmpmin" />
|
|
||||||
<filterchain>
|
|
||||||
<headfilter lines="15" />
|
|
||||||
</filterchain>
|
|
||||||
</concat>
|
|
||||||
<concat destfile="${JQ_MIN}" append="yes">
|
|
||||||
<filelist files="${dist}/tmpmin" />
|
|
||||||
</concat>
|
|
||||||
<delete file="${dist}/tmpmin" />
|
|
||||||
<echo message="${JQ_MIN} built." />
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="clean">
|
|
||||||
<delete dir="${dist}" />
|
|
||||||
<delete file="src/selector.js" />
|
|
||||||
<delete dir="test/qunit" />
|
|
||||||
<delete dir="src/sizzle" />
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="openAjaxMetadata">
|
|
||||||
<property name="target" value="openAjaxMetadata-jquery-${version}.xml" />
|
|
||||||
<delete file="${dist}/jquery-*.xml" />
|
|
||||||
<get src="http://www.exfer.net/jquery/createjQueryXMLDocs.py?version=1.3" dest="${target}" />
|
|
||||||
<xslt includes="${target}" excludes="build.xml" destdir="./dist" style="build/style.xsl" extension=".xml" />
|
|
||||||
<delete file="${target}" />
|
|
||||||
</target>
|
|
||||||
|
|
||||||
</project>
|
|
Binary file not shown.
BIN
build/js.jar
BIN
build/js.jar
Binary file not shown.
|
@ -1,6 +1,6 @@
|
||||||
load("build/jslint.js");
|
var JSLINT = require("./lib/jslint").JSLINT,
|
||||||
|
print = require("sys").print,
|
||||||
var src = readFile("dist/jquery.js");
|
src = require("fs").readFileSync("dist/jquery.js", "utf8");
|
||||||
|
|
||||||
JSLINT(src, { evil: true, forin: true, maxerr: 100 });
|
JSLINT(src, { evil: true, forin: true, maxerr: 100 });
|
||||||
|
|
||||||
|
@ -29,8 +29,8 @@ for ( var i = 0; i < e.length; i++ ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( found > 0 ) {
|
if ( found > 0 ) {
|
||||||
print( "\n" + found + " Error(s) found." );
|
print( "\n" + found + " Error(s) found.\n" );
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
print( "JSLint check passed." );
|
print( "JSLint check passed.\n" );
|
||||||
}
|
}
|
||||||
|
|
|
@ -5495,6 +5495,10 @@ loop: for (;;) {
|
||||||
|
|
||||||
itself.edition = '2010-02-20';
|
itself.edition = '2010-02-20';
|
||||||
|
|
||||||
|
if (typeof exports !== "undefined") {
|
||||||
|
exports.JSLINT = itself;
|
||||||
|
}
|
||||||
|
|
||||||
return itself;
|
return itself;
|
||||||
|
|
||||||
}());
|
}());
|
1239
build/lib/parse-js.js
Normal file
1239
build/lib/parse-js.js
Normal file
File diff suppressed because it is too large
Load diff
1562
build/lib/process.js
Normal file
1562
build/lib/process.js
Normal file
File diff suppressed because it is too large
Load diff
22
build/lib/squeeze-more.js
Normal file
22
build/lib/squeeze-more.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
var jsp = require("./parse-js"),
|
||||||
|
pro = require("./process"),
|
||||||
|
slice = jsp.slice,
|
||||||
|
member = jsp.member,
|
||||||
|
PRECEDENCE = jsp.PRECEDENCE,
|
||||||
|
OPERATORS = jsp.OPERATORS;
|
||||||
|
|
||||||
|
function ast_squeeze_more(ast) {
|
||||||
|
var w = pro.ast_walker(), walk = w.walk;
|
||||||
|
return w.with_walkers({
|
||||||
|
"call": function(expr, args) {
|
||||||
|
if (expr[0] == "dot" && expr[2] == "toString" && args.length == 0) {
|
||||||
|
// foo.toString() ==> foo+""
|
||||||
|
return [ "binary", "+", expr[1], [ "string", "" ]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, function() {
|
||||||
|
return walk(ast);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.ast_squeeze_more = ast_squeeze_more;
|
199
build/uglify.js
Normal file
199
build/uglify.js
Normal file
|
@ -0,0 +1,199 @@
|
||||||
|
#! /usr/bin/env node
|
||||||
|
// -*- js2 -*-
|
||||||
|
|
||||||
|
global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util");
|
||||||
|
var fs = require("fs"),
|
||||||
|
jsp = require("./lib/parse-js"),
|
||||||
|
pro = require("./lib/process");
|
||||||
|
|
||||||
|
pro.set_logger(function(msg){
|
||||||
|
sys.debug(msg);
|
||||||
|
});
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
ast: false,
|
||||||
|
mangle: true,
|
||||||
|
mangle_toplevel: false,
|
||||||
|
squeeze: true,
|
||||||
|
make_seqs: true,
|
||||||
|
dead_code: true,
|
||||||
|
beautify: false,
|
||||||
|
verbose: false,
|
||||||
|
show_copyright: true,
|
||||||
|
out_same_file: false,
|
||||||
|
extra: false,
|
||||||
|
unsafe: false, // XXX: extra & unsafe? but maybe we don't want both, so....
|
||||||
|
beautify_options: {
|
||||||
|
indent_level: 4,
|
||||||
|
indent_start: 0,
|
||||||
|
quote_keys: false,
|
||||||
|
space_colon: false
|
||||||
|
},
|
||||||
|
output: true // stdout
|
||||||
|
};
|
||||||
|
|
||||||
|
var args = jsp.slice(process.argv, 2);
|
||||||
|
var filename;
|
||||||
|
|
||||||
|
out: while (args.length > 0) {
|
||||||
|
var v = args.shift();
|
||||||
|
switch (v) {
|
||||||
|
case "-b":
|
||||||
|
case "--beautify":
|
||||||
|
options.beautify = true;
|
||||||
|
break;
|
||||||
|
case "-i":
|
||||||
|
case "--indent":
|
||||||
|
options.beautify_options.indent_level = args.shift();
|
||||||
|
break;
|
||||||
|
case "-q":
|
||||||
|
case "--quote-keys":
|
||||||
|
options.beautify_options.quote_keys = true;
|
||||||
|
break;
|
||||||
|
case "-mt":
|
||||||
|
case "--mangle-toplevel":
|
||||||
|
options.mangle_toplevel = true;
|
||||||
|
break;
|
||||||
|
case "--no-mangle":
|
||||||
|
case "-nm":
|
||||||
|
options.mangle = false;
|
||||||
|
break;
|
||||||
|
case "--no-squeeze":
|
||||||
|
case "-ns":
|
||||||
|
options.squeeze = false;
|
||||||
|
break;
|
||||||
|
case "--no-seqs":
|
||||||
|
options.make_seqs = false;
|
||||||
|
break;
|
||||||
|
case "--no-dead-code":
|
||||||
|
options.dead_code = false;
|
||||||
|
break;
|
||||||
|
case "--no-copyright":
|
||||||
|
case "-nc":
|
||||||
|
options.show_copyright = false;
|
||||||
|
break;
|
||||||
|
case "-o":
|
||||||
|
case "--output":
|
||||||
|
options.output = args.shift();
|
||||||
|
break;
|
||||||
|
case "--overwrite":
|
||||||
|
options.out_same_file = true;
|
||||||
|
break;
|
||||||
|
case "-v":
|
||||||
|
case "--verbose":
|
||||||
|
options.verbose = true;
|
||||||
|
break;
|
||||||
|
case "--ast":
|
||||||
|
options.ast = true;
|
||||||
|
break;
|
||||||
|
case "--extra":
|
||||||
|
options.extra = true;
|
||||||
|
break;
|
||||||
|
case "--unsafe":
|
||||||
|
options.unsafe = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
filename = v;
|
||||||
|
break out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filename) {
|
||||||
|
fs.readFile(filename, "utf8", function(err, text){
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
output(squeeze_it(text));
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
var stdin = process.openStdin();
|
||||||
|
stdin.setEncoding("utf8");
|
||||||
|
var text = "";
|
||||||
|
stdin.on("data", function(chunk){
|
||||||
|
text += chunk;
|
||||||
|
});
|
||||||
|
stdin.on("end", function() {
|
||||||
|
output(squeeze_it(text));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function output(text) {
|
||||||
|
var out;
|
||||||
|
if (options.out_same_file && filename)
|
||||||
|
options.output = filename;
|
||||||
|
if (options.output === true) {
|
||||||
|
out = process.stdout;
|
||||||
|
} else {
|
||||||
|
out = fs.createWriteStream(options.output, {
|
||||||
|
flags: "w",
|
||||||
|
encoding: "utf8",
|
||||||
|
mode: 0644
|
||||||
|
});
|
||||||
|
}
|
||||||
|
out.write(text);
|
||||||
|
out.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
// --------- main ends here.
|
||||||
|
|
||||||
|
function show_copyright(comments) {
|
||||||
|
var ret = "";
|
||||||
|
for (var i = 0; i < comments.length; ++i) {
|
||||||
|
var c = comments[i];
|
||||||
|
if (c.type == "comment1") {
|
||||||
|
ret += "//" + c.value + "\n";
|
||||||
|
} else {
|
||||||
|
ret += "/*" + c.value + "*/";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
|
||||||
|
function squeeze_it(code) {
|
||||||
|
var result = "";
|
||||||
|
if (options.show_copyright) {
|
||||||
|
var initial_comments = [];
|
||||||
|
// keep first comment
|
||||||
|
var tok = jsp.tokenizer(code, false), c;
|
||||||
|
c = tok();
|
||||||
|
var prev = null;
|
||||||
|
while (/^comment/.test(c.type) && (!prev || prev == c.type)) {
|
||||||
|
initial_comments.push(c);
|
||||||
|
prev = c.type;
|
||||||
|
c = tok();
|
||||||
|
}
|
||||||
|
result += show_copyright(initial_comments);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
var ast = time_it("parse", function(){ return jsp.parse(code); });
|
||||||
|
if (options.mangle)
|
||||||
|
ast = time_it("mangle", function(){ return pro.ast_mangle(ast, options.mangle_toplevel); });
|
||||||
|
if (options.squeeze)
|
||||||
|
ast = time_it("squeeze", function(){
|
||||||
|
ast = pro.ast_squeeze(ast, {
|
||||||
|
make_seqs : options.make_seqs,
|
||||||
|
dead_code : options.dead_code,
|
||||||
|
extra : options.extra
|
||||||
|
});
|
||||||
|
if (options.unsafe)
|
||||||
|
ast = pro.ast_squeeze_more(ast);
|
||||||
|
return ast;
|
||||||
|
});
|
||||||
|
if (options.ast)
|
||||||
|
return sys.inspect(ast, null, null);
|
||||||
|
result += time_it("generate", function(){ return pro.gen_code(ast, options.beautify && options.beautify_options) });
|
||||||
|
return result;
|
||||||
|
} catch(ex) {
|
||||||
|
sys.debug(ex.stack);
|
||||||
|
sys.debug(sys.inspect(ex));
|
||||||
|
sys.debug(JSON.stringify(ex));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function time_it(name, cont) {
|
||||||
|
if (!options.verbose)
|
||||||
|
return cont();
|
||||||
|
var t1 = new Date().getTime();
|
||||||
|
try { return cont(); }
|
||||||
|
finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); }
|
||||||
|
};
|
Loading…
Reference in a new issue