Gruntfile.js (148 lines of code) (raw):

module.exports = function(grunt) { grunt.registerTask('test', "XFramework qunit test", function() { grunt.initConfig({ jshint: { options: { jshintrc: '.jshintrc' }, files: [ 'Gruntfile.js', 'package.json', 'xf/src/*.js', 'xf/ui/*.js', 'js/xf.js', 'test/components/test.js', 'test/src/*.js', 'test/ui/*.js', 'test/lib/run-qunit.js', 'test/*.js' ] }, recess: { options: { compile: false, noUniversalSelectors: false, noOverqualifying: false, zeroUnits: false }, files: ['styles/*.css'] }, qunit: { files: ['test/index.html'] } }); grunt.loadNpmTasks('grunt-contrib-qunit'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-recess'); grunt.task.run(['jshint', 'qunit', 'recess']); }); grunt.registerTask('appbuild', "XFramework: application build", function() { grunt.initConfig({ uglify: { dist: { files: { 'prod/js/app.min.js': ['js/app.js'] } }, lib: { files: { 'prod/js/lib.min.js': [ 'js/lib/jquery/dist/jquery.js', 'js/lib/underscore/underscore.js', 'js/lib/backbone/backbone.js', 'js/lib/requirejs/requirejs.js' ] } } }, recess: { pretify: { options: { compile: true, }, files: { "styles/app.css": ["styles/app.css"] } }, minify: { options: { compile: true, compress: true }, files: { "prod/styles/app.min.css": ["styles/xf.min.css", "styles/app.css"] } } }, processhtml: { dist: { files: { 'prod/index.html': ['index.html'] } } } }); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-recess'); grunt.loadNpmTasks('grunt-processhtml'); grunt.task.run(['uglify', 'recess', "processhtml"]); }); grunt.loadNpmTasks('grunt-bower-task'); grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), build: { all: { dest: "js/xf.js", minimum: ["core"] }, }, bower: { install: { options: { targetDir: "bower_modules", cleanup: true } } }, uglify: { dist: { files: { 'js/xf.min.js': ['<%= build.all.dest %>'] } } }, less: { development: { options: { paths: ["styles"] }, files: { "styles/xf.css": "styles/xf.less" } } }, recess: { pretify: { options: { compile: true, }, files: { "styles/xf.css": ["styles/xf.css"] } }, minify: { options: { compile: true, compress: true }, files: { "styles/xf.min.css": ["styles/xf.css"] } } } }); // Load grunt tasks from NPM packages require("load-grunt-tasks")(grunt); // Integrate jQuery specific tasks grunt.loadTasks("build/tasks"); grunt.registerTask('install', ['bower']); grunt.registerTask('default', ['build', 'uglify', 'less', 'recess']); };