]> source.dussan.org Git - jquery-ui.git/commitdiff
Build/grunt: Minify CSS files, using sqwish.
authorJörn Zaefferer <joern.zaefferer@gmail.com>
Tue, 6 Mar 2012 19:15:51 +0000 (20:15 +0100)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Tue, 6 Mar 2012 19:15:51 +0000 (20:15 +0100)
grunt.js
package.json

index 45deca7bdbc08a853df638a2ad607549e9e84eb2..44a49a37248a39bf56c9abe2e34f855b727b629b 100644 (file)
--- a/grunt.js
+++ b/grunt.js
@@ -1,13 +1,10 @@
 /*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(', ');
-var allFiles = coreFiles.map(function(file) {
+var uiFiles = coreFiles.map(function(file) {
   return 'ui/' + file;
 }).concat(file.expand('ui/*.js').filter(function(file) {
   return coreFiles.indexOf(file.substring(3)) === -1;
 }));
-var rawList = allFiles.map(function(file) {
-  return file.substring(3);
-});
 
 var minify = {
   'dist/ui/minified/jquery-ui.min.js': ['<banner:meta.bannerAll>', 'dist/ui/jquery-ui.js'],
@@ -16,19 +13,23 @@ var minify = {
 function minFile(file) {
   minify['dist/' + file.replace(/\.js$/, '.min.js').replace(/ui\//, 'ui/minified/')] = ['<banner>', file];
 }
-allFiles.forEach(minFile);
+uiFiles.forEach(minFile);
 
 var allI18nFiles = file.expand('ui/i18n/*.js');
 allI18nFiles.forEach(minFile);
-var i18nfiles = allI18nFiles.map(function(file) {
-  return file.substring(8);
-});
+
+// TODO move core to the front, theme to the end, exclude all and base
+var cssFiles = file.expand('themes/base/*.css');
 
 function createBanner(files) {
+  // strip folders
+  var fileNames = files && files.map(function(file) {
+    return file.replace(/.+\/(.+)$/, '$1');
+  });
   return '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
       '<%= template.today("isoDate") %>\n' +
       '<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' +
-      (files ? '* Includes: ' + files.join(', ') + '\n' : '') +
+      (files ? '* Includes: ' + fileNames.join(', ') + '\n' : '') +
       '* Copyright (c) <%= template.today("yyyy") %> <%= pkg.author.name %>;' +
       ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */';
 }
@@ -37,14 +38,21 @@ config.init({
   pkg: '<json:package.json>',
   meta: {
     banner: createBanner(),
-    bannerAll: createBanner(rawList),
-    bannerI18n: createBanner(i18nfiles)
+    bannerAll: createBanner(uiFiles),
+    bannerI18n: createBanner(allI18nFiles),
+    bannerCSS: createBanner(cssFiles)
   },
   concat: {
-    'dist/ui/jquery-ui.js': allFiles,
+    'dist/ui/jquery-ui.js': uiFiles,
     'dist/ui/i18n/jquery-ui-i18n.js': 'ui/i18n/*.js'
   },
   min: minify,
+  css_min: {
+    dist: {
+      src: ['<banner:meta.bannerCSS>'].concat(cssFiles),
+      dest: 'dist/themes/base/minified/jquery-ui.min.css'
+    }
+  },
   zip: {
     dist: {
       src: [
@@ -107,5 +115,26 @@ task.registerBasicTask('zip', 'Create a zip file for release', function(data) {
   log.writeln("Wrote " + files.length + " files to " + data.dest);
 });
 
+task.registerBasicTask( 'css_min', 'Minify CSS files with Sqwish.', function( data ) {
+  var files = file.expand( data.src );
+  // Get banner, if specified. It would be nice if UglifyJS supported ignoring
+  // all comments matching a certain pattern, like /*!...*/, but it doesn't.
+  var banner = task.directive(files[0], function() { return null; });
+  if (banner === null) {
+    banner = '';
+  } else {
+    files.shift();
+  }
+  var max = task.helper( 'concat', files );
+  // Concat banner + minified source.
+  var min = banner + require('sqwish').minify( max, false );
+  file.write( data.dest, min );
+  if ( task.hadErrors() ) {
+    return false;
+  }
+  log.writeln( 'File "' + data.dest + '" created.' );
+  task.helper( 'min_max_info', min, max );
+});
+
 task.registerTask('default', 'lint qunit');
 task.registerTask('release', 'concat min zip');
index 9745bda44775aa397bac0667848051a48e0d1397..37cb6d035c0e92e1bce524fe10cccdd62c60fe57 100644 (file)
@@ -27,7 +27,8 @@
   "dependencies": {},
   "devDependencies": {
     "grunt": "0.2.x",
-    "adm-zip": "0.1.x"
+    "adm-zip": "0.1.x",
+    "sqwish": "0.2.x"
   },
   "keywords": []
 }
\ No newline at end of file