Skip to content

Commit

Permalink
Replace build system with a faster new one that uses Node and UglifyJ…
Browse files Browse the repository at this point in the history
…S 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.
  • Loading branch information
csnover committed Jan 18, 2011
1 parent 9c76ac4 commit d503845
Show file tree
Hide file tree
Showing 12 changed files with 3,073 additions and 369 deletions.
15 changes: 4 additions & 11 deletions Makefile
Expand Up @@ -7,11 +7,8 @@ BUILD_DIR = build
PREFIX = .
DIST_DIR = ${PREFIX}/dist

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

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

MINJAR ?= java -jar ${CLOSURE_COMPILER}
JS_ENGINE ?= node
COMPILER = ${JS_ENGINE} ${BUILD_DIR}/uglify.js --unsafe

BASE_FILES = ${SRC_DIR}/core.js\
${SRC_DIR}/support.js\
Expand Down Expand Up @@ -93,17 +90,13 @@ ${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}

clean:
@@echo "Removing Distribution directory:" ${DIST_DIR}
Expand Down
95 changes: 37 additions & 58 deletions README.md
@@ -1,85 +1,64 @@
[jQuery](http://jquery.com/) - 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](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.

* **`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].
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:

make

*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://github.com/jquery/jquery.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/`
Troubleshooting
---------------

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

Questions?
----------

If you have any questions, please feel free to ask them on the Developing jQuery Core
forum, which can be found here:
[http://forum.jquery.com/developing-jquery-core](http://forum.jquery.com/developing-jquery-core)
If you have any questions, please feel free to ask on the
[Developing jQuery Core forum](http://forum.jquery.com/developing-jquery-core) or in #jquery on irc.freenode.net.
162 changes: 0 additions & 162 deletions Rakefile

This file was deleted.

0 comments on commit d503845

Please sign in to comment.