outaTiME/grunt-replace

Removing unused prefixed matches

panstav opened this issue · 4 comments

Title might be confusing, I'll try to clearify..

For exaple: I'm using this awesome task to insert Google Analytics into the build that goes remote.
Production / Dev routine..

What I do is:

var addGoogleAnalytics = {
  match: 'GOOGLEANALYTICS',
  replacement: '<script>lalala</script>'
 };

remotePatterns.push(addGoogleAnalytics);
localPatterns.push({ 
  match: addGoogleAnalytics.match, 
  replacement: '<!-- Google Analytics goes here -->' 
});

...grunt.initConfig...
remote: {
  files: {
    'index.html': 'app.html'
  },
  options: {
    patterns: remotePatterns
  }
}
...grunt.initConfig...

At first I thought the default preservePrefix: false was to remove the unused prefixes off the source code after a replace (for example, on the localBuild task, when that match doesn't get replaced with the script), but obviously that's was a horrible assumption to make. So I ended up using this pattern for every replace task I write..

I was wondering if you had any thoughts of a solution for this, a pool of matchers & removeUnreplaced, perhaps?

What do you think?

Hi pal,

Glad to hear you about using grunt-replace / applause ^^

In other words you need to clean unreplaced matches ? you can create a new regexp for that or not ? or i misunderstanding ?

Remember ... you can preserve patterns execution using preserveOrder parameter (https://github.com/outaTiME/grunt-replace#preserveorder)

Im got something like that in mind:

remote: {
  files: {
    'index.html': 'app.html'
  },
  options: {
    patterns: [
      {
        match: 'GOOGLEANALYTICS',
        replacement: '<script>lalala</script>'
      }, 
      {
        // remove unused
        match: /@@\w+/g, 
        replacement: ''
      }
    ], 
    preserveOrder: true
  }
}

what do you think ??

Thank you for giving the time for such an easy one. =]

Wooow, do you try it ?!? It works?!?