module.exports = function (grunt) { require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), coffee: { lib: { options: { bare: false }, files: { 'morris.js': ['build/morris.coffee'] } }, spec: { options: { bare: true }, files: { 'build/spec.js': ['build/spec.coffee'] } }, }, concat: { 'build/morris.coffee': { options: { banner: "### @license\n"+ "<%= pkg.name %> v<%= pkg.version %>\n"+ "Copyright <%= (new Date()).getFullYear() %> <%= pkg.author.name %> All rights reserved.\n" + "Licensed under the <%= pkg.license %> License.\n" + "###\n", }, src: [ 'lib/morris.coffee', 'lib/morris.grid.coffee', 'lib/morris.hover.coffee', 'lib/morris.line.coffee', 'lib/morris.area.coffee', 'lib/morris.bar.coffee', 'lib/morris.donut.coffee' ], dest: 'build/morris.coffee' }, 'build/spec.coffee': ['spec/support/**/*.coffee', 'spec/lib/**/*.coffee'] }, less: { all: { src: 'less/*.less', dest: 'morris.css', options: { compress: true } } }, uglify: { build: { options: { preserveComments: 'some' }, files: { 'morris.min.js': 'morris.js' } } }, mocha: { index: ['spec/specs.html'], options: {run: true} }, watch: { all: { files: ['lib/**/*.coffee', 'spec/lib/**/*.coffee', 'spec/support/**/*.coffee', 'less/**/*.less'], tasks: 'default' }, dev: { files: 'lib/*.coffee' , tasks: ['concat:build/morris.coffee', 'coffee:lib'] } }, shell: { visual_spec: { command: './run.sh', options: { stdout: true, failOnError: true, execOptions: { cwd: 'spec/viz' } } } } }); grunt.registerTask('default', ['concat', 'coffee', 'less', 'uglify', 'mocha', 'shell:visual_spec']); };