First iteration on grunt-based build. lint, qunit, concat, min and zip all work, but all have various limiations.

This commit is contained in:
Jörn Zaefferer 2012-03-02 16:45:10 +01:00
parent 3e8ec7eb6b
commit 69dcb76e6b
3 changed files with 134 additions and 0 deletions

2
.gitignore vendored
View File

@ -1,6 +1,8 @@
build/dist build/dist
build/size build/size
build/build/.sizecache.json build/build/.sizecache.json
dist
node_modules
docs docs
.project .project
*~ *~

99
grunt.js Normal file
View File

@ -0,0 +1,99 @@
/*global config:true, task:true*/
var coreFiles = 'jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.effects.core.js'.split(', ');
config.init({
pkg: '<json:package.json>',
meta: {
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
'<%= template.today("m/d/yyyy") %>\n' +
'<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' +
'* Copyright (c) <%= template.today("yyyy") %> <%= pkg.author.name %>;' +
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */'
},
concat: {
// 'dist/ui/jquery-ui.js': ['<banner>', '<file_strip_banner:ui/*.js>']
'dist/jquery-ui.js': coreFiles.map(function(file) {
return 'ui/' + file;
}).concat(file.expand('ui/*.js').filter(function(file) {
return coreFiles.indexOf(file.substring(3)) === -1;
}))
},
min: {
'dist/jquery-ui.min.js': ['<banner>', 'dist/jquery-ui.js']
},
zip: {
dist: {
src: [
'dist/**/*.js',
'README.md',
'grunt.js',
'package.json',
'ui/**/*',
'demos/**/*',
'themes/**/*',
'external/**/*',
'tests/**/*'
],
dest: 'dist/<%= pkg.name %>-<%= pkg.version %>.zip'
}
},
qunit: {
files: file.expand('tests/unit/**/*.html').filter(function(file) {
// disabling everything that doesn't (quite) work with PhantomJS for now
// except for all|index|test, try to include more as we go
return !(/(all|index|test|draggable|droppable|selectable|resizable|sortable|dialog|slider|datepicker|tabs|tabs_deprecated)\.html/).test(file);
})
},
lint: {
// TODO extend this to tests
files: ['ui/*']
},
jshint: {
options: {
curly: true,
eqeqeq: true,
immed: true,
latedef: true,
newcap: true,
noarg: true,
sub: true,
undef: true,
eqnull: true,
browser: true
},
globals: {
jQuery: true
}
}
});
task.registerBasicTask('zip', 'Create a zip file for release', function(data) {
var files = file.expand(data.src);
log.writeln("Creating zip file " + data.dest);
var done = this.async();
var zipstream = require('zipstream');
var fs = require('fs');
var out = fs.createWriteStream(data.dest);
var zip = zipstream.createZip({ level: 1 });
zip.pipe(out);
function addFile() {
if (!files.length) {
zip.finalize(function(written) {
log.writeln(written + ' total bytes written');
done();
});
return;
}
var file = files.shift();
log.verbose.writeln('Zipping ' + file);
zip.addFile(fs.createReadStream(file), { name: file }, addFile);
}
addFile();
});
task.registerTask('default', 'lint qunit');
task.registerTask('release', 'default concat min zip');

33
package.json Normal file
View File

@ -0,0 +1,33 @@
{
"name": "jquery-ui",
"title": "jQuery UI",
"description": "Abstractions for low-level interaction and animation, advanced effects and high-level, themeable widgets, built on top of the jQuery JavaScript Library, that you can use to build highly interactive web applications.",
"version": "1.9.0pre",
"homepage": "https://github.com/jquery/jquery-ui",
"author": {
"name": "AUTHORS.txt"
},
"repository": {
"type": "git",
"url": "git://github.com/jquery/jquery-ui.git"
},
"bugs": {
"url": "http://bugs.jqueryui.com/"
},
"licenses": [
{
"type": "MIT",
"url": "http://www.opensource.org/licenses/MIT"
},
{
"type": "GPL",
"url": "http://www.opensource.org/licenses/GPL-2.0"
}
],
"dependencies": {},
"devDependencies": {
"grunt": "0.2.x",
"zipstream": "0.2.x"
},
"keywords": []
}