/** Gruntfile - control build and deploy tasks */ module.exports = function(grunt) { var srcDir = 'src/'; var buildDir = 'build/'; var developmentDir = buildDir+'development/'; var productionDir = buildDir+'production/'; grunt.initConfig({ clean: { development: { src: [developmentDir] }, production: { src: [productionDir] } }, coffee: { options: { bare: true }, compile: { files: [{ expand: true, cwd: srcDir, src: ['client/qed-client/**/*.coffee', 'server/**/*.coffee'], dest: developmentDir, ext: '.js' }] } }, copy: { 'client-deps': { files: [{ expand: true, cwd: srcDir, src: ['client/dojo/**', 'client/dijit/**', 'client/dojox/**', 'client/util/**'], dest: developmentDir }] }, 'server-deps': { files: [{ expand: true, cwd: srcDir, src: ['node_modules/**'], dest: developmentDir }] }, compile: { files: [{ expand: true, cwd: srcDir, src: ['**', '!**/*.coffee', '!**/*.less', '!node_modules/**', '!client/dojo/**', '!client/dijit/**', '!client/dojox/**', '!client/util/**' ], dest: developmentDir }] }, deploy: { files: [{ expand: true, cwd: developmentDir, src: ['**', '!client/*/**' ], dest: productionDir }] } }, dojo: { deploy: { options: { dojo: developmentDir+'client/dojo/dojo.js', profile: developmentDir+'client/client.profile.js', releaseDir: '../../../'+productionDir } } }, htmlhint: { options: { htmlhintrc: srcDir+".htmlhintrc" }, compile: { files: [{ expand: true, cwd: srcDir, src: ['client/*.html', 'client/qed-client/**/*.html'] }] } }, jshint: { options: { jshintrc: srcDir+".jshintrc" }, compile: { files: [{ expand: true, cwd: srcDir, src: ['client/qed-client/**/*.js', 'server/**.js'] }] } }, less: { options: { strictImports: false, dumpLineNumbers: "all" }, compile: { files: [{ expand: true, cwd: srcDir, src: ['client/qed-client/css/qed.less'], dest: developmentDir, ext: '.css' }] } } }); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-coffee'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-less'); grunt.loadNpmTasks('grunt-dojo'); grunt.loadNpmTasks('grunt-htmlhint'); // development tasks grunt.registerTask('install-deps', ['copy:server-deps', 'copy:client-deps']); grunt.registerTask('compile', ['less:compile', 'jshint:compile', 'htmlhint:compile', 'coffee:compile', 'copy:compile']); grunt.registerTask('build', ['clean:development', 'install-deps', 'compile']); // production tasks grunt.registerTask('deploy', ['clean:production', 'copy:deploy', 'dojo:deploy']); // default task is quick compile grunt.registerTask('default', ['compile']); };