]> source.dussan.org Git - jquery-ui.git/commitdiff
First iteration on grunt-based build. lint, qunit, concat, min and zip all work,...
authorJörn Zaefferer <joern.zaefferer@gmail.com>
Fri, 2 Mar 2012 15:45:10 +0000 (16:45 +0100)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Fri, 2 Mar 2012 15:45:10 +0000 (16:45 +0100)
.gitignore
grunt.js [new file with mode: 0644]
package.json [new file with mode: 0644]

index 70f7a9c79d09535215c800c0e6d00dea9127338e..dc1bdf6c118bd00a199ec644dd10fed3250efe17 100644 (file)
@@ -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 (file)
index 0000000..b935a0b
--- /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 (file)
index 0000000..f1bbdf6
--- /dev/null
@@ -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