title: Grunt tasks stuck in endless loop
body: <p>Working on putting together a base <code>Gruntfile.js</code> for some upcoming projects. Starting in on a new computer so everything has been a fresh build. Installed Node and NPM using Homebrew, and then installed Grunt globally, as well as in my local directory.</p>
  
  <p>Here is my <code>package.json</code>:</p>
  
  <pre><code>{
    "name": "timespent-prototype",
    "version": "0.1.0",
    "devDependencies": {
      "assemble": "0.4.37",
      "bower": "^1.4.1",
      "grunt": "^0.4.5",
      "grunt-contrib-concat": "^0.5.1",
      "grunt-contrib-sass": "^0.9.2",
      "grunt-contrib-watch": "^0.6.1",
      "grunt-newer": "^1.1.0",
      "grunt-wiredep": "^2.0.0"
    }
  }
  </code></pre>
  
  <p>And here is my <code>Gruntfile.js</code>:</p>
  
  <pre><code>module.exports = function(grunt) {
  
    // Project configuration.
    grunt.initConfig({
      pkg: grunt.file.readJSON('package.json'),
  
      concat: {
        vendor: {
         src: ['vendor/**/*.min.js'],
         dest: 'build/javascripts/library.js',
        }
      },
  
      // Takes your scss files and compiles them to css
      sass: {
        dist: {
          options: {
            style: 'expanded'
          },
          files: {
            'build/stylesheets/application.css': 'app/stylesheets/application/index.scss'
          }
        }
      },
  
      // Assembles your templates into HTML files
      assemble: {
        options: {
          layoutdir: 'app/views/layouts/',
          partials: ['app/views/partials/*.hbs'],
          flatten: true,
          expand: true
        },
        pages: {
          src: ['app/views/**/*.hbs','!app/views/layouts/*.hbs','!app/views/partials/*.hbs'],
          dest: 'build/'
        }
      },
  
      wiredep: {
        task: {
          src: ['app/views/layouts/*.hbs']
        }
      },
  
      // Watches for file changes, runs the default task
      watch: {
        files: ['app/**/*'],
        tasks: ['default'],
        options: {
          // Start another live reload server on port 1337
          livereload: 1337,
        }
      }
  
    });
  
    // Load the plugins
    grunt.loadNpmTasks('assemble');
    grunt.loadNpmTasks('grunt-contrib-sass');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-newer');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-wiredep');
  
    // Register the tasks
    grunt.registerTask('default', ['sass','assemble']);
    grunt.registerTask('watch', ['watch']);
    grunt.registerTask('concat', ['concat']);
    grunt.registerTask('wiredep', ['wiredep']);
  };
  </code></pre>
  
  <p>The problem that I am seeing is that with multiple tasks, here specifically with <code>wiredep</code> and <code>concat</code>, the task gets stuck in a loop and never ends. Running <code>grunt concat</code> with verbose outputs like this:</p>
  
  <pre><code>Registering "grunt-contrib-concat" local Npm module tasks.
  Reading /Users/jacksonlynch/projects/timespent-prototype/node_modules/grunt-contrib-concat/package.json...OK
  Parsing /Users/jacksonlynch/projects/timespent-prototype/node_modules/grunt-contrib-concat/package.json...OK
  Loading "concat.js" tasks...OK
  + concat
  
  Running tasks: concat
  
  Running "concat" task
  
  Running "concat" task
  
  Running "concat" task
  
  Running "concat" task
  
  Running "concat" task
  
  Running "concat" task
  </code></pre>
  
  <p>Where <code>Running "concat" task</code> will continue to print until I stop it. As I am seeing this with multiple plugins and tasks this might be a problem with my installation of NPM or Grunt, but I'm having a very hard time debugging this. If anyone has run into this before, please let me know what helped!</p>
  
  <p>Thanks!</p>
  
  <hr>
  
  <p>Edit: in response to Alireza Ahmadi's comment, here is my file structure:</p>
  
  <pre><code>.
  |
  |_ app/
    |_ assets/
    |_ javascript/
    |_ stylesheets/
    |_ views/
  |
  |_ build/
    |_stylesheets/
    |_javascripts/
  |
  |_ vendor/
  |_ bower.json
  |_ Gruntfile.js
  |_ package.json
  </code></pre>