Search code examples
javascriptgruntjsgrunt-contrib-concat

Dryer file paths with Grunt


I am adding grunt to a project and I am creating several JS files using the CONCAT task but I would like to dry up the file path rather then repeating static/js/...

concat: {
libraries: {
  src: ['static/js/jquery-ui-1.9.2.custom.min.js'],
  dest: 'static/scripts/libraries.js'
},
plugins: {
  src: ['static/js/le-mtagconfig.js', 'static/js/jquery.magnific.js', 'static/js/jquery.tipTipTui.js', 'static/js/jquery.galleriffic.js', 'static/js/jquery.opacityrollover.js', 'static/js/jquery.bxslider.min.js' ],
  dest: 'static/scripts/plugins.js'
},
site_52: {
  src: ['static/js/main.js', 'static/direct/js/main.js', 'static/js/52.js', 'static/direct/js/52.js' ],
  dest: 'static/scripts/site_52.js'
},
site_70: {
  src: ['static/js/main.js', 'static/direct/js/main.js',, 'static/js/70.js', 'static/direct/js/70.js' ],
  dest: 'static/scripts/site_70.js'
},
site_71: {
  src: ['static/js/main.js', 'static/direct/js/main.js', 'static/js/71.js', 'static/direct/js/71.js' ],
  dest: 'static/scripts/site_71.js'
},
site_78: {
  src: ['static/js/main.js', 'static/direct/js/main.js', 'static/js/78.js', 'static/direct/js/78.js' ],
  dest: 'static/scripts/site_78.js'
},
site_79: {
  src: ['static/js/main.js', 'static/direct/js/main.js', 'static/js/79.js', 'static/direct/js/79.js' ],
  dest: 'static/scripts/site_79.js'
},
site_81: {
  src: ['static/js/main.js', 'static/direct/js/main.js', 'static/js/81.js', 'static/direct/js/81.js' ],
  dest: 'static/scripts/site_81.js'
},
custom: {
  src: ['static/js/tripadvisor.js', 'static/js/tripadvisor-templates.js', 'static/js/handlebars-v1.3.0.js', 'static/js/handlebars-helpers.js', 'static/js/jquery.modals.js', 'static/js/jquery.bxslidertui.js' ],
  dest: 'static/scripts/custom.js'
}
},

Solution

  • Just use a template name in the style of <%= varName =>.

    For example:

    module.exports = function (grunt) {
    
      grunt.js = 'static/js/';
      grunt.directJs = 'static/direct/js/';
    
      concat: {
        plugins: {
          site_52: {
            src: [<%= grunt.js %>main.js', <%= grunt.directJs %>main.js']
          }
        }
      }
    }