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/.destination.json
dist/.sizecache.json dist/.sizecache.json
build/.sizecache.json build/.sizecache.json
bower_modules
node_modules node_modules
bower_components

View File

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

View File

@ -1,5 +1,3 @@
language: node_js language: node_js
node_js: node_js:
- '0.10' - '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" ), var gzip = require( "gzip-js" ),
path = require( "path" ),
srcHintOptions = readOptionalJSON( "src/.jshintrc" ); srcHintOptions = readOptionalJSON( "src/.jshintrc" );
// The concatenated file won't pass onevar // 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: { jsonlint: {
pkg: { pkg: {
src: [ "package.json" ] src: [ "package.json" ]

View File

@ -29,39 +29,37 @@ if you swing that way. Easy-peasy.
How to build your own jQuery 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 ```bash
git clone git://github.com/jquery/jquery.git 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 ```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: Now by running `grunt` command, in the jquery directory, you could build full version of jQuery, just like with `npm run-script build` command:
```bash
grunt -version
bower -version
``` ```
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 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 ### Modules
@ -137,10 +135,10 @@ Running the Unit Tests
Make sure you have the necessary dependencies: Make sure you have the necessary dependencies:
```bash ```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 ```bash
cd jquery && grunt watch cd jquery && grunt watch

View File

@ -19,6 +19,18 @@
"requirejs": "~2.1.8", "requirejs": "~2.1.8",
"qunit": "~1.12.0" "qunit": "~1.12.0"
}, },
"exportsOverride": {
"sizzle": {
"sizzle": "."
},
"requirejs": {
"requirejs": "require.js"
},
"qunit": {
"qunit": "qunit"
}
},
"keywords": [ "keywords": [
"jquery", "jquery",
"javascript", "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" endFile: "src/outro.js"
}, },
paths: { paths: {
sizzle: "../bower_components/sizzle/dist/sizzle" sizzle: "../bower_modules/sizzle/dist/sizzle"
}, },
rawText: {}, rawText: {},
onBuildWrite: convert onBuildWrite: convert

View File

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

View File

@ -297,8 +297,10 @@ this.loadTests = function() {
if ( dep ) { if ( dep ) {
require( [ dep ], loadDep ); require( [ dep ], loadDep );
} else { } else {
// Subproject tests must be last because they replace our test fixture // 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 // Call load to build module filter select element
QUnit.load(); QUnit.load();

View File

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

2
test/jquery.js vendored
View File

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