title: Grunt Warning: Path must be a string. Received a null
body: <p>I'm getting this error when I try to compile with Grunt. I haven't used it much before but I seem to only be getting this error with this project and it works fine for other projects on my server.</p>
  
  <blockquote>
    <p>Running "jshint:main" (jshint) task
    Warning: Path must be a string. Received null Use --force to continue.</p>
    
    <p>Aborted due to warnings.</p>
  </blockquote>
  
  <p>Grunt file</p>
  
  <pre class="lang-js prettyprint-override"><code>module.exports = function(grunt) {
  
    // Project configuration.
    grunt.initConfig({
      pkg: grunt.file.readJSON('package.json'),
  
      uglify: {
  
        options: {
          mangle: false
        },
  
        target: {
          files: {
            'script/dist/main.min.js': 'script/dist/main.js'
          }
        },
  
        build: {
          files: {
            'script/dist/build.min.js': 'script/dist/build.min.js'
          }
        }
  
      },
  
      concat: {
        options: {
          stripBanners: true,
          banner: '/*! &lt;%= pkg.name %&gt; - v&lt;%= pkg.version %&gt; - ' +
            '&lt;%= grunt.template.today("yyyy-mm-dd") %&gt; */',
        },
  
        srcJS: {
          src: ['script/src/menu.js',
            'script/src/custom_plugins.js',
            'script/src/banner.js',
            'script/src/latestNews.js',
            'script/src/officers.js',
            'script/src/eventsCalendar.js',
            'script/src/combinedSocialMedia.js',
            'script/src/haveYourSay.js',
            'script/src/photoGallery.js',
            'script/src/countdown.js'
          ],
          dest: 'script/dist/main.js'
        },
  
        css: {
          src: ['style/libs/bootstrap.min.css',
            'style/libs/bootstrap-theme.min.css',
            'style/src/css/*'
          ],
          dest: 'style/dist/build.min.css'
        },
  
        build: {
          src: ['script/libs/jquery.easing.min.js',
            'script/dist/main.js',
            'script/libs/bootstrap.min.js',
            'script/libs/velocity.min.js',
            'script/libs/date.js',
            'script/libs/jquery.timeago.js',
            'script/libs/owl.carousel.min.js'
          ],
          dest: 'script/dist/build.min.js'
        }
  
      },
  
      jshint: {
  
        main: 'script/dist/main.js'
  
      },
  
      watch: {
  
        js: {
          files: 'script/src/*',
          tasks: ['concat:srcJS', 'uglify:target', 'jshint:main', 'copy:js']
        },
  
        css: {
          files: 'style/src/css/*',
          tasks: ['copy:css']
        },
  
        less: {
          files: 'style/src/less/*',
          tasks: ['less', 'copy:css']
        },
  
        html: {
          files: '*.html',
          tasks: ['validation', 'bootlint']
        }
  
      },
  
      clean: {
        js: [
          'script/dist/main.min.js',
          'dist/build.min.js',
          'dist/build.min.css'
        ]
      },
  
      copy: {
        css: {
          files: [
  
            {
              expand: true,
              'src': 'style/src/css/main.css',
              'dest': 'style/dist/',
              flatten: true,
              rename: function(dest, src) {
                return dest + src.replace('main', 'build.min');
              }
            },
  
            {
              expand: true,
              'src': 'style/dist/build.min.css',
              'dest': 'dist/',
              flatten: true
            },
  
          ]
        },
  
        js: {
          files: [{
            expand: true,
            'src': 'script/dist/build.min.js',
            'dest': 'dist/',
            flatten: true
          }]
        }
      },
  
      validation: {
        options: {
          reset: grunt.option('reset') || false,
          stoponerror: true,
          relaxerror: ['Bad value X-UA-Compatible for attribute http-equiv on element meta.'] //ignores these errors
        },
        files: {
          src: ['homepage.html']
        }
      },
  
      bootlint: {
        options: {
          stoponerror: false,
          relaxerror: ['E001', 'E003', 'E031', 'W001', 'W002', 'W003', 'W005', 'W007', 'W009', 'E013']
        },
        files: ['homepage.html'],
      },
  
      less: {
        build: {
          options: {
            paths: ["style/src/less"],
            cleancss: true,
            compress: true
          },
          files: {
            "style/src/css/main.css": "style/src/less/main.less"
          }
        }
      }
  
    });
  
    // Load the plugin that provides the "uglify" task.
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-less');
    grunt.loadNpmTasks('grunt-html-validation');
    grunt.loadNpmTasks('grunt-bootlint');
  
    // Default task(s).
    //grunt.registerTask('default', ['concat:srcJS','concat:css','uglify','jshint:main']);
    grunt.registerTask('default', [
      'validation',
      'bootlint',
      'concat:srcJS',
      'jshint:main',
      'uglify:target',
      'clean',
      'concat:build',
      'uglify:build',
      'less',
      'copy'
    ]);
  };
  </code></pre>