Initial grunt implementation

This commit is contained in:
Rick Waldron waldron.rick@gmail.com 2012-04-18 16:07:35 -04:00
parent 9ebc27db54
commit 1434b5b567
3 changed files with 193 additions and 1 deletions

3
.gitignore vendored
View File

@ -7,4 +7,5 @@ dist
*.patch
/*.html
.DS_Store
build/.sizecache.json
dist/.sizecache.json
node_modules

159
grunt.js Normal file
View File

@ -0,0 +1,159 @@
/*global config:true, task:true*/
module.exports = function( grunt ) {
var task = grunt.task;
var file = grunt.file;
var utils = grunt.utils;
var log = grunt.log;
var verbose = grunt.verbose;
var fail = grunt.fail;
var option = grunt.option;
var config = grunt.config;
var template = grunt.template;
grunt.initConfig({
pkg: "<json:package.json>",
meta: {
banner: "/*! jQuery v@<%= pkg.version %> jquery.com | jquery.org/license */"
},
compare_size: {
files: [
"dist/jquery.js",
"dist/jquery.min.js"
]
},
selector: {
"src/selector.js": [
"src/sizzle-jquery.js",
"src/sizzle/sizzle.js"
]
},
build: {
"dist/jquery.js": [
"src/intro.js",
"src/core.js",
"src/callbacks.js",
"src/deferred.js",
"src/support.js",
"src/data.js",
"src/queue.js",
"src/attributes.js",
"src/event.js",
"src/selector.js",
"src/traversing.js",
"src/manipulation.js",
"src/css.js",
"src/ajax.js",
"src/ajax/jsonp.js",
"src/ajax/script.js",
"src/ajax/xhr.js",
"src/effects.js",
"src/offset.js",
"src/dimensions.js",
"src/exports.js",
"src/outro.js"
]
},
min: {
"dist/jquery.min.js": [ "<banner>", "dist/jquery.js" ]
},
lint: {
files: [ "grunt.js", "dist/jquery.js" ]
},
watch: {
files: "<config:lint.files>",
tasks: "concat lint"
},
jshint: {
options: {
evil: true,
browser: true,
wsh: true,
eqnull: true,
expr: true,
curly: true,
trailing: true,
undef: true,
smarttabs: true,
predef: [
"define",
"DOMParser",
"WebKitPoint",
"__dirname"
],
maxerr: 100
},
globals: {
jQuery: true,
global: true,
module: true,
exports: true,
require: true,
file: true,
log: true,
console: true
}
},
uglify: {}
});
// Default grunt.
grunt.registerTask( "default", "selector build lint min compare_size" );
grunt.loadNpmTasks("grunt-compare-size");
// Build src/selector.js
grunt.registerMultiTask( "selector", "Build src/selector.js", function() {
var name = this.file.dest,
files = this.file.src,
sizzle = {
api: file.read( files[0] ),
src: file.read( files[1] )
},
compiled;
// sizzle-jquery.js -> sizzle after "EXPOSE", replace window.Sizzle
compiled = sizzle.src.replace( "window.Sizzle = Sizzle;", sizzle.api );
verbose.write("Injected sizzle-jquery.js into sizzle.js");
// Write concatenated source to file
file.write( name, compiled );
// Fail task if errors were logged.
if ( this.errorCount ) {
return false;
}
// Otherwise, print a success message.
log.writeln( "File '" + name + "' created." );
});
// Special concat/build task to handle various jQuery build requirements
grunt.registerMultiTask( "build", "Concatenate source, embed date/version", function() {
// Concat specified files.
var compiled = "",
name = this.file.dest;
this.file.src.forEach(function( filepath ) {
compiled += file.read( filepath ).replace( /.function..jQuery...\{/g, "" ).replace( /\}...jQuery..;/g, "" );
});
// Embed Date
// Embed Version
compiled = compiled.replace( "@DATE", new Date() )
.replace( "@VERSION", config("pkg.version") );
// Write concatenated source to file
file.write( name, compiled );
// Fail task if errors were logged.
if ( this.errorCount ) {
return false;
}
// Otherwise, print a success message.
log.writeln( "File '" + name + "' created." );
});
};

32
package.json Normal file
View File

@ -0,0 +1,32 @@
{
"name": "jquery",
"title": "jQuery",
"description": "New Wave JavaScript",
"version": "1.8.0",
"homepage": "http://jquery.com",
"author": {
"name": "John Resig"
},
"repository": {
"type": "git",
"url": "https://github.com/jquery/jquery.git"
},
"bugs": {
"url": "http://bugs.jquery.com"
},
"licenses": [
{
"type": "MIT",
"url": "http://jquery.com/blob/master/MIT-LICENSE.txt"
},
{
"type": "GPL",
"url": "http://jquery.com/blob/master/GPL-LICENSE.txt"
}
],
"dependencies": {},
"devDependencies": {
"grunt-compare-size": ">=0.1.0"
},
"keywords": []
}