'use strict'; module.exports = function(grunt) { // Project Configuration grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), watch: { jade: { files: ['app/views/**'], options: { livereload: true, }, }, js: { files: ['Gruntfile.js', 'server.js', 'app/**/*.js', 'public/js/**'], tasks: ['jshint'], options: { livereload: true, }, }, html: { files: ['public/views/**'], options: { livereload: true, }, }, css: { files: ['public/css/**'], options: { livereload: true } } }, jshint: { all: { src: ['Gruntfile.js', 'server.js', 'app/**/*.js', 'public/js/**'], options: { jshintrc: true } } }, nodemon: { dev: { options: { file: 'server.js', args: [], ignoredFiles: ['public/**'], watchedExtensions: ['js'], nodeArgs: ['--debug'], delayTime: 1, env: { PORT: 3000 }, cwd: __dirname } } }, concurrent: { tasks: ['nodemon', 'watch'], options: { logConcurrentOutput: true } }, env: { test: { NODE_ENV: 'test' } } }); //Load NPM tasks grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-nodemon'); grunt.loadNpmTasks('grunt-concurrent'); grunt.loadNpmTasks('grunt-env'); //Making grunt default to force in order not to break the project. grunt.option('force', true); //Default task(s). grunt.registerTask('default', ['jshint', 'concurrent']); };