Use grunt and bower packages as local dependencies. Close gh-1433.

This commit is contained in:
Timmy Willison 2013-11-14 10:17:18 -05:00
parent 1a13e0b1ad
commit ac7ff97f8b
12 changed files with 62 additions and 47 deletions

2
.gitignore vendored
View File

@ -9,5 +9,5 @@ dist
dist/.destination.json
dist/.sizecache.json
build/.sizecache.json
bower_modules
node_modules
bower_components

View File

@ -1,7 +1,7 @@
src/intro.js
src/outro.js
test/qunit/**
test/data/jquery-1.9.1.js
bower_modules
test/data/badcall.js
test/data/badjson.js
test/data/json_obj.js

View File

@ -1,5 +1,3 @@
language: node_js
node_js:
- '0.10'
before_install:
- npm install grunt-cli bower -g

View File

@ -10,6 +10,7 @@ module.exports = function( grunt ) {
}
var gzip = require( "gzip-js" ),
path = require( "path" ),
srcHintOptions = readOptionalJSON( "src/.jshintrc" );
// The concatenated file won't pass onevar
@ -46,6 +47,17 @@ module.exports = function( grunt ) {
}
}
},
bower: {
install: {
options: {
targetDir: "bower_modules",
cleanup: true,
layout: function( type ) {
return path.join( type );
}
}
}
},
jsonlint: {
pkg: {
src: [ "package.json" ]

View File

@ -29,39 +29,37 @@ if you swing that way. Easy-peasy.
How to build your own jQuery
----------------------------
First, clone a copy of the main jQuery git repo by running:
Clone a copy of the main jQuery git repo by running:
```bash
git clone git://github.com/jquery/jquery.git
```
Install the [grunt-cli](http://gruntjs.com/getting-started#installing-the-cli) and [bower](http://bower.io/) packages if you haven't before. These should be done as global installs:
Enter the jquery directory and run the build script:
```bash
npm install -g grunt-cli bower
cd jquery && npm run-script build
```
The built version of jQuery will be put in the `dist/` subdirectory, along with the minified copy and associated map file.
If you want create custom build or help with jQuery development, it would be better to install <a href="https://github.com/gruntjs/grunt-cli">grunt command line interface</a> as a global package:
```
npm install -g grunt-cli
```
Make sure you have `grunt` installed by testing:
```
grunt -v
```
Make sure you have `grunt` and `bower` installed by testing:
```bash
grunt -version
bower -version
Now by running `grunt` command, in the jquery directory, you could build full version of jQuery, just like with `npm run-script build` command:
```
Enter the jquery directory and install the Node and Bower dependencies, this time *without* specifying a global(-g) install:
```bash
cd jquery && npm install
```
Then, to get a complete, minified (w/ Uglify.js), linted (w/ JSHint) version of jQuery, type the following:
```bash
grunt
```
The built version of jQuery will be put in the `dist/` subdirectory, along with the minified copy and associated map file.
There are many other tasks avaliable for jQuery Core:
```
grunt -help
```
### Modules
@ -137,10 +135,10 @@ Running the Unit Tests
Make sure you have the necessary dependencies:
```bash
bower install
npm install
```
Start `grunt watch` to auto-build jQuery as you work:
Start `grunt watch` or `npm start` to auto-build jQuery as you work:
```bash
cd jquery && grunt watch

View File

@ -19,6 +19,18 @@
"requirejs": "~2.1.8",
"qunit": "~1.12.0"
},
"exportsOverride": {
"sizzle": {
"sizzle": "."
},
"requirejs": {
"requirejs": "require.js"
},
"qunit": {
"qunit": "qunit"
}
},
"keywords": [
"jquery",
"javascript",

View File

@ -1,13 +0,0 @@
var which = require( "which" ),
spawn = require( "child_process" ).spawn;
try {
which.sync( "bower" );
} catch( error ) {
console.error( "Bower must be installed to build jQuery." );
console.error( "Please install Bower by running the following command:" );
console.error( "npm install -g bower" );
process.exit( 0 );
}
spawn( "bower", [ "install" ], { stdio: "inherit" } );

View File

@ -26,7 +26,7 @@ module.exports = function( grunt ) {
endFile: "src/outro.js"
},
paths: {
sizzle: "../bower_components/sizzle/dist/sizzle"
sizzle: "../bower_modules/sizzle/dist/sizzle"
},
rawText: {},
onBuildWrite: convert

View File

@ -30,6 +30,8 @@
"devDependencies": {
"archiver": "~0.4.10",
"grunt": "~0.4.1",
"grunt-bower-task": "~0.3.2",
"grunt-cli": "~0.1.11",
"grunt-compare-size": "~0.4.0",
"grunt-contrib-jshint": "~0.7.0",
"grunt-contrib-uglify": "~0.2.7",
@ -44,7 +46,11 @@
"which": "~1.0.5"
},
"scripts": {
"install": "node build/bower-install",
"build": "npm install && grunt",
"install": "grunt bower",
"start": "grunt watch",
"test": "grunt"
}
}

View File

@ -297,8 +297,10 @@ this.loadTests = function() {
if ( dep ) {
require( [ dep ], loadDep );
} else {
// Subproject tests must be last because they replace our test fixture
testSubproject( "Sizzle", "../bower_components/sizzle/test/", /^unit\/.*\.js$/, function() {
testSubproject( "Sizzle", "../bower_modules/sizzle/test/", /^unit\/.*\.js$/, function() {
// Call load to build module filter select element
QUnit.load();

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<title>jQuery Test Suite</title>
<link rel="Stylesheet" media="screen" href="../bower_components/qunit/qunit/qunit.css" />
<link rel="Stylesheet" media="screen" href="../bower_modules/qunit/qunit.css" />
<link rel="Stylesheet" media="screen" href="data/testsuite.css" />
<!-- Includes -->
@ -14,8 +14,8 @@
-->
<script src="data/jquery-1.9.1.js"></script>
<script src="../bower_components/qunit/qunit/qunit.js"></script>
<script src="../bower_components/requirejs/require.js"></script>
<script src="../bower_modules/qunit/qunit.js"></script>
<script src="../bower_modules/requirejs/require.js"></script>
<!-- See testinit for the list of tests -->
<script src="data/testinit.js"></script>

2
test/jquery.js vendored
View File

@ -19,7 +19,7 @@
require.config({
baseUrl: path,
paths: {
sizzle: path + "bower_components/sizzle/dist/sizzle"
sizzle: path + "bower_modules/sizzle/dist/sizzle"
}
});
src = "src/jquery";