Skip to content
Browse files
Merge branch 'master' into proxy-native-bind
* master: (194 commits)
  Revert "Make sure that focusin/focusout bubbles in non-IE browsers." This was causing problems with the focusin event, see: #7340.
  Replaces "text in-between" technique with a full-fledged one-level transitive search for converters (unit tests added). Also cleans up auto dataType determination and adds converter checks in order to guess the best dataType possible.
  Moves determineResponse logic into main ajax callback. Puts responseXXX fields definitions into ajaxSettings.
  Removes misleading comment.
  Bring jQuery('#id') and jQuery('body') logic back into core (while leaving it in Sizzle at the same time). Was causing too much of a performance hit to leave it all to Sizzle.
  Renames Deferred's fire and fireReject methods as resolveWith and rejectWith respectively.
  Fix typo in regex tweak from previous commit.
  Renames determineDataType as determineResponse. Makes it more generic as a first step into integrating the logic into the main ajax done callback. Also fixes some comments in ajax/xhr.js.
  Move jQuery(...) selector speed-up logic into Sizzle(...) qSA handling. Additionally add in a new catch for Sizzle('.class') (avoid using qSA and use getElementsByClassName instead, where applicable).
  Revises the way arguments are handled in ajax.
  Makes sure statusCode callbacks are ordered in the same way success and error callbacks are. Unit tests added.
  Cleans up and simplifies code shared by ajaxPrefilter and ajaxTransport. Removes chainability of ajaxSetup, ajaxPrefilter and ajaxTransport. Also makes sure context is handled properly by ajaxSetup (unit test added).
  Rework unit tests to check actual result elements.
  Moves active counter test after all other ajax tests where it should be.
  Revised the Nokia support fallback. It turns out that Nokia supports the documentElement property but does not define document.compatMode. Adding this third fallback allows Nokia to run jQuery error-free and return proper values for window width and height.
  Moves things around to make jsLint happier.
  Fixes crossDomain test so that it assumes port to be 80 for http and 443 for https when it is not provided.
  Moves determineDataType into ajaxSettings so that it is accessible to transports without the need for a second argument and so that we can now pass the original options to the transport instead. Also ensures the original options are actually propagated to prefilters (they were not).
  Re-adds hastily removed variable and simplifies statusCode based callbacks handling.
  Use undefined instead of 0 to deference transport for clarity.

  • Loading branch information
gf3 committed Jan 21, 2011
2 parents ade531c + 328a86f commit a03f040dbfb12da6409e31cb5923550d4be4a99e
Show file tree
Hide file tree
Showing 56 changed files with 6,683 additions and 2,996 deletions.
@@ -1,4 +1,4 @@
Copyright (c) 2010 John Resig,
Copyright (c) 2011 John Resig,

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -7,11 +7,8 @@ BUILD_DIR = build

RHINO ?= java -jar ${BUILD_DIR}/js.jar

CLOSURE_COMPILER = ${BUILD_DIR}/google-compiler-20100917.jar

JS_ENGINE ?= `which node nodejs`
COMPILER = ${JS_ENGINE} ${BUILD_DIR}/uglify.js --unsafe

BASE_FILES = ${SRC_DIR}/core.js\
@@ -24,10 +21,9 @@ BASE_FILES = ${SRC_DIR}/core.js\
@@ -79,13 +75,13 @@ init:
jquery: ${JQ}
jq: ${JQ}

@@echo "Building" ${JQ}

@@cat ${MODULES} | \
sed 's/.function..jQuery...{//' | \
sed 's/}...jQuery..;//' | \
sed 's/Date:./&'"${DATE}"'/' | \
sed 's/@DATE/'"${DATE}"'/' | \
${VER} > ${JQ};

${SRC_DIR}/selector.js: ${SIZZLE_DIR}/sizzle.js
@@ -94,17 +90,16 @@ ${SRC_DIR}/selector.js: ${SIZZLE_DIR}/sizzle.js

lint: ${JQ}
@@echo "Checking jQuery against JSLint..."
@@${RHINO} build/jslint-check.js
@@${JS_ENGINE} build/jslint-check.js

min: ${JQ_MIN}

${JQ_MIN}: ${JQ}
@@echo "Building" ${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
@@${COMPILER} ${JQ} > ${JQ_MIN}.tmp
@@echo ";" >> ${JQ_MIN}.tmp
@@sed 's/\*\/(/*\/ʩ(/' ${JQ_MIN}.tmp | tr "ʩ" "\n" > ${JQ_MIN}
@@rm -rf ${JQ_MIN}.tmp

@@echo "Removing Distribution directory:" ${DIST_DIR}
@@ -1,85 +1,64 @@
[jQuery]( - New Wave Javascript

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]( 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]( (Full installer for official Git),
[GNU make for Windows](, and a
[binary version of Node.js]( Make sure all three packages are installed to the same
location (by default, this is C:\Program Files\Git).
2. Install [Cygwin]( (make sure you install the git, make, and which packages), then either follow
the [Node.js build instructions]( or install
the [binary version of Node.js](

* **`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]( and
[](Homebrew). Once Homebrew is installed, run `brew install git` to install git,
and `brew install node` to install Node.js.

* **`ant`**: If you have Ant installed (or are on Windows and don't have access to make). You can download Ant from here: [].
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.

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.*

In the main directory of the distribution (the one that this file is in), type
the following to make all versions of jQuery:


*Here are the individual items that are buildable from the Makefile:*

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`
How to build your own jQuery

make lint
First, clone a copy of the main jQuery git repo by running `git clone git://`.

Tests a build of jQuery against JSLint, looking for potential errors or bits of confusing code.
Then, to get a complete, minified, jslinted version of jQuery, simply `cd` to the `jquery` directory and type
`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 selector
The built version of jQuery will be put in the `dist/` subdirectory.

Builds the selector library for jQuery from Sizzle.
Makes: `./src/selector.js`
To remove all built files, run `make clean`.

Finally, you can remove all the built files using the command:

make clean

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:

make PREFIX=/home/john/test/ [command]

With this example, the output files would be contained in `/home/john/test/dist/`
With this example, the output files would end up in `/home/jquery/test/dist/`.

**Rake only:** Define the DIST_DIR directory, for example:

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.*
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.

**Ant only:** You cannot currently build to another directory when using Ant.


If you have any questions, please feel free to ask them on the Developing jQuery Core
forum, which can be found here:
If you have any questions, please feel free to ask on the
[Developing jQuery Core forum]( or in #jquery on
138 Rakefile

This file was deleted.

0 comments on commit a03f040

Please sign in to comment.