/* jshint node:true */ module.exports = function (grunt) { grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-stylus'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('intern'); // grunt-contrib-stylus does not appear to support globbed destination filenames, // so generate the desired destination/source configuration ahead of time var stylusFiles = grunt.file.expand([ 'css/dgrid.styl', 'css/skins/*.styl', '!css/skins/skin.styl' ]); var stylusFilesConfig = {}; stylusFiles.forEach(function (filename) { stylusFilesConfig[filename.slice(0, -5) + '.css'] = filename; }); grunt.initConfig({ clean: { css: { src: [ 'css/**/*.css' ] } }, stylus: { options: { compress: false, use: [ require('nib') ] }, compile: { files: stylusFilesConfig } }, watch: { stylus: { files: [ 'css/**/*.styl' ], tasks: [ 'stylus' ] } }, intern: { options: { reporters: [ 'LcovHtml', 'Pretty' ], runType: 'runner', config: 'test/intern/intern' }, local: { options: { config: 'test/intern/intern-local' } }, browserstack: {}, saucelabs: { options: { config: 'test/intern/intern-saucelabs' } } } }); grunt.registerTask('default', [ 'stylus', 'watch:stylus' ]); grunt.registerTask('test', function () { var flags = Object.keys(this.flags); if (!flags.length) { flags.push('local'); } flags.forEach(function (flag) { grunt.task.run('intern:' + flag); }); }); };