aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJörn Zaefferer <joern.zaefferer@gmail.com>2012-03-02 16:45:10 +0100
committerJörn Zaefferer <joern.zaefferer@gmail.com>2012-03-02 16:45:10 +0100
commit69dcb76e6b4095f221dbe63e8658a18594a39d83 (patch)
tree7766f69da3ff0c47ae79932dbfcb24a2a3c8f192
parent3e8ec7eb6bee97034363fe4e8704ed762fadbaba (diff)
downloadjquery-ui-69dcb76e6b4095f221dbe63e8658a18594a39d83.tar.gz
jquery-ui-69dcb76e6b4095f221dbe63e8658a18594a39d83.zip
First iteration on grunt-based build. lint, qunit, concat, min and zip all work, but all have various limiations.
-rw-r--r--.gitignore2
-rw-r--r--grunt.js99
-rw-r--r--package.json33
3 files changed, 134 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 70f7a9c79..dc1bdf6c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,8 @@
build/dist
build/size
build/build/.sizecache.json
+dist
+node_modules
docs
.project
*~
diff --git a/grunt.js b/grunt.js
new file mode 100644
index 000000000..b935a0bc7
--- /dev/null
+++ b/grunt.js
@@ -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');
diff --git a/package.json b/package.json
new file mode 100644
index 000000000..f1bbdf69d
--- /dev/null
+++ b/package.json
@@ -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": []
+} \ No newline at end of file