diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2012-03-02 16:45:10 +0100 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2012-03-02 16:45:10 +0100 |
commit | 69dcb76e6b4095f221dbe63e8658a18594a39d83 (patch) | |
tree | 7766f69da3ff0c47ae79932dbfcb24a2a3c8f192 | |
parent | 3e8ec7eb6bee97034363fe4e8704ed762fadbaba (diff) | |
download | jquery-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-- | .gitignore | 2 | ||||
-rw-r--r-- | grunt.js | 99 | ||||
-rw-r--r-- | package.json | 33 |
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 |