code: function(bundle_deps) {
      var patterns = [
        '**',
        '!dist/**',
        '!plato/**',
        '!cov-*/**',
        '!test*/**',
        '!config/**',
        '!output/**',
        '!coverage/**',
        '!node_modules/**',
        '!package.json', // this will be processed
        '!Gruntfile.js',
        '!Makefile',
        '!makefile',
        '!npm-debug.log',
        '!*.sublime-project',
        '!sonar-project.properties',
        '!**/*.tar.gz'
      ];
      if (bundle_deps) {
        var nodeModulePatterns = _.uniq(getProductionNodeModules().map(formatDirectory));
        patterns = patterns.concat(nodeModulePatterns);
      }
      var fhignore = grunt.config.get('fhignore');
      var extras = [];
      if (fhignore && _.isArray(fhignore)) {
        extras = fhignore.map(function(elem) {
          return '!' + elem;
        });
      }
      Array.prototype.push.apply(patterns, extras);
      var fhinclude = grunt.config.get('fhinclude');
      extras = [];
      if(fhinclude && _.isArray(fhinclude)) {
        extras = fhinclude;
      }
      Array.prototype.push.apply(patterns, extras);
      grunt.log.debug("Patterns: " + patterns);
      return patterns;
    }
docs: If grunt config contains an array property called 'fhignore',
  its elements will be excluded from the tarball.