Grunt skipping some javascript files

Hello

I’m developing a Roots-based theme on my localhost and uploading it to a testing server, which is working fine. However if I then make tweaks to the javascript and run Grunt on the testing server, not all of the javascript files are included in scripts.min.js.

If I run Grunt in verbose mode it seems to include (during the uglify task) the javascript I’ve written, but skip those files that are third party files (e.g. JQuery plugins).

My Gruntfile.js may not set up correctly: it currently explicitly names the files I want to end up in scripts.min.js under ‘uglify’ but nowhere else. However the same Gruntfile.js on my localhost works fine and includes all the referenced files.

Any pointers would be very welcome. Thanks!

Doesn’t make sense that it works fine for you locally but when you run it on your testing server you’re getting different results. Are you sure the testing server has the same files you’re using locally?

Can you share your Gruntfile?

Thanks for getting back to me. The files on the server should be the same; they’re deployed from Git. It’s not a big issue as I don’t normally develop on the testing server, but am curious if I’m using Grunt wrong. Here’s the Gruntfile:

'use strict';
module.exports = function(grunt) {

  grunt.initConfig({
    jshint: {
      options: {
        jshintrc: '.jshintrc'
      },
      all: [
        'Gruntfile.js',
        'assets/js/*.js',
        '!assets/js/scripts.min.js'
      ]
    },
    less: {
      dist: {
        files: {
          'assets/css/main.min.css': [
            'assets/less/leaflet.less',
            'assets/less/app.less'
          ]
        },
        options: {
          compress: true,
          // LESS source map
          // To enable, set sourceMap to true and update sourceMapRootpath based on your install
          sourceMap: false,
          sourceMapFilename: 'assets/css/main.min.css.map',
          sourceMapRootpath: '/app/themes/roots/'
        }
      }
    },
    uglify: {
      dist: {
        files: {
          'assets/js/scripts.min.js': [
            'assets/js/plugins/bootstrap/transition.js',
            'assets/js/plugins/bootstrap/alert.js',
            'assets/js/plugins/bootstrap/button.js',
            'assets/js/plugins/bootstrap/carousel.js',
            'assets/js/plugins/bootstrap/collapse.js',
            'assets/js/plugins/bootstrap/dropdown.js',
            'assets/js/plugins/bootstrap/modal.js',
            'assets/js/plugins/bootstrap/tooltip.js',
            'assets/js/plugins/bootstrap/popover.js',
            'assets/js/plugins/bootstrap/scrollspy.js',
            'assets/js/plugins/bootstrap/tab.js',
            'assets/js/plugins/bootstrap/affix.js',
            'assets/js/plugins/bootstrap/bootstrap3-typeahead.min.js',
            'assets/js/plugins/*.js',
            'assets/js/_*.js',
            'assets/js/vendor/jquery.equalheights.js',
            'assets/js/vendor/jquery.sparkline.min.js',
            'assets/js/vendor/jquery.flot.min.js',
            'assets/js/vendor/jquery.flot.categories.min.js',
            'assets/js/vendor/jquery.flot.tooltip.min.js',
            'assets/js/vendor/leaflet.js',
            'assets/js/vendor/numeral.js',
            'assets/js/vendor/Label.js',
            'assets/js/vendor/Leaflet.label.js',
            'assets/js/vendor/FeatureGroup.Label.js',
            'assets/js/vendor/Map.Label.js',
            'assets/js/vendor/Marker.Label.js',
            'assets/js/vendor/Path.Label.js',
            'assets/js/homely.js',
            'assets/js/homely-who-to-use.js',
            'assets/js/homely-what-to-do.js',
            'assets/js/cosy-map.js'

          ]
        },
        options: {
          // JS source map: to enable, uncomment the lines below and update sourceMappingURL based on your install
          // sourceMap: 'assets/js/scripts.min.js.map',
          // sourceMappingURL: '/app/themes/roots/assets/js/scripts.min.js.map'
        }
      }
    },
    version: {
      options: {
        file: 'lib/scripts.php',
        css: 'assets/css/main.min.css',
        cssHandle: 'roots_main',
        js: 'assets/js/scripts.min.js',
        jsHandle: 'roots_scripts'
      }
    },
    watch: {
      less: {
        files: [
          'assets/less/*.less',
          'assets/less/bootstrap/*.less'
        ],
        tasks: ['less', 'version']
      },
      js: {
        files: [
          '<%= jshint.all %>'
        ],
        tasks: ['jshint', 'uglify', 'version']
      },
      livereload: {
        // Browser live reloading
        // https://github.com/gruntjs/grunt-contrib-watch#live-reloading
        options: {
          livereload: false
        },
        files: [
          'assets/css/main.min.css',
          'assets/js/scripts.min.js',
          'templates/*.php',
          '*.php'
        ]
      }
    },
    clean: {
      dist: [
        'assets/css/main.min.css',
        'assets/js/scripts.min.js'
      ]
    }
  });

  // Load tasks
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-less');
  grunt.loadNpmTasks('grunt-wp-version');

  // Register tasks
  grunt.registerTask('default', [
    'clean',
    'less',
    'uglify',
    'version'
  ]);
  grunt.registerTask('dev', [
    'watch'
  ]);

};