From 00a38f3975d238142eb90d94164389232db8651c Mon Sep 17 00:00:00 2001 From: jlukic Date: Tue, 5 Nov 2013 12:56:04 -0500 Subject: [PATCH] Fixes issues with source not minifying correctly in release, segments up grunt tasks --- Gruntfile.js | 117 +++++++++++++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 55 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index cc2277a8f..60cfd4e1b 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -18,7 +18,13 @@ module.exports = function(grunt) { 'copy:srcToDocs', // copies examples over to docs - 'copy:examplesToDocs' + 'copy:examplesToDocs', + + // create concatenated css release + 'concat:createCSSPackage', + + // create concatenated js release + 'concat:createJSPackage' ], testWatchTasks = [ @@ -34,63 +40,53 @@ module.exports = function(grunt) { 'karma:travis' ], - specTasks = [ - // generate code docs - 'docco:generate', - - // copies spec files over to docs - 'copy:specToDocs' - ], - - buildTasks = [ + releaseTasks = [ // clean build directory 'clean:build', + // copies assets and js over to build dir + 'copy:srcToBuild', + // compiles less 'less:buildCSS', - // copies assets and js over to build dir - 'copy:srcToBuild', + // auto prefix build files + 'autoprefixer:prefixBuild', + + // creates minified js of each file + 'uglify:minifyJS', // creates minified css of each file 'cssmin:minifyCSS', - // adds custom license in header - 'cssmin:addBanner', - // create concatenated css release - 'concat:concatenateCSS', + 'concat:createCSSPackage', // create concatenated js release - 'concat:concatenateJS', - - // creates minified js of each file - 'uglify:minifyJS', + 'concat:createJSPackage', // creates release js of all together - 'uglify:buildReleaseJS', - - // creates minified css of each file - 'cssmin:minifyCSS', + 'uglify:createMinJSPackage', // creates custom license in header - 'cssmin:addBanner', - - // auto prefix build files - 'autoprefixer:prefixBuild', - - // cleans previous generated release - 'clean:release', + 'cssmin:createMinCSSPackage', // creates release zip 'compress:everything', + // cleans previous generated release + 'clean:release' + ], + + rtlTasks = [ // copies assets to rtl 'copy:buildToRTL', // create rtl release - 'cssjanus:rtl', + 'cssjanus:rtl' + ], + docTasks = [ // copies examples over to docs 'copy:examplesToDocs', @@ -104,6 +100,8 @@ module.exports = function(grunt) { 'copy:specToDocs' ], + buildTasks = releaseTasks.concat(rtlTasks).concat(docTasks), + setWatchTests = function(action, filePath) { var karmaFiles = grunt.config('karma.watch.files'), @@ -141,6 +139,9 @@ module.exports = function(grunt) { preserveFileExtensions = function(folder, filename) { return folder + filename.substring(0, filename.lastIndexOf('.') ) + '.css'; }, + preserveMinFileExtensions = function(folder, filename) { + return folder + filename.substring(0, filename.lastIndexOf('.') ) + '.min.css'; + }, config ; @@ -477,17 +478,34 @@ module.exports = function(grunt) { concat: { options: { }, - concatenateCSS: { + createCSSPackage: { src: ['build/uncompressed/**/*.css'], dest: 'build/packaged/css/semantic.css' }, - concatenateJS: { + createJSPackage: { src: ['build/uncompressed/**/*.js'], dest: 'build/packaged/javascript/semantic.js' }, }, cssmin: { + options : { + keepSpecialComments: 0, + report: 'min', + banner : '' + + '/*\n' + + '* # <%= package.title %>\n' + + '* Version: <%= package.version %>\n' + + '* http://github.com/jlukic/semantic-ui\n' + + '*\n' + + '*\n' + + '* Copyright <%= grunt.template.today("yyyy") %> Contributors\n' + + '* Released under the MIT license\n' + + '* http://opensource.org/licenses/MIT\n' + + '*\n' + + '* Released: <%= grunt.template.today("mm/dd/yyyy") %>\n' + + '*/\n' + }, // copy minified css to minified release minifyCSS: { @@ -496,27 +514,12 @@ module.exports = function(grunt) { src : [ '**/*.css' ], - dest : 'build/minified', - ext : '.min.css' + dest : 'build/minified/', + rename: preserveMinFileExtensions }, // add comment banner to css release - addBanner: { - options : { - banner : '' + - '/*\n' + - '* # <%= package.title %>\n' + - '* Version: <%= package.version %>\n' + - '* http://github.com/jlukic/semantic-ui\n' + - '*\n' + - '*\n' + - '* Copyright <%= grunt.template.today("yyyy") %> Contributors\n' + - '* Released under the MIT license\n' + - '* http://opensource.org/licenses/MIT\n' + - '*\n' + - '* Released: <%= grunt.template.today("mm/dd/yyyy") %>\n' + - '*/\n' - }, + createMinCSSPackage: { files: { 'build/packaged/css/semantic.min.css': [ 'build/uncompressed/**/*.css' @@ -550,7 +553,7 @@ module.exports = function(grunt) { '*/\n' }, - buildReleaseJS: { + createMinJSPackage: { options: { mangle : true, compress : true, @@ -595,11 +598,15 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-karma'); grunt.initConfig(config); + grunt.registerTask('default', defaultTasks); - grunt.registerTask('build', buildTasks); - grunt.registerTask('spec', specTasks); grunt.registerTask('test', testTasks); + grunt.registerTask('release', releaseTasks); + grunt.registerTask('rtl', rtlTasks); + grunt.registerTask('docs', docTasks); + grunt.registerTask('build', buildTasks); + // compiles only changed less files grunt.event.on('watch', setWatchFiles);