ember-cli / broccoli-asset-rev

Broccoli plugin to add fingerprint checksums and CDN URLs to your assets
MIT License
87 stars 84 forks source link

Template Literals + `prepend` doesn't work correctly and results in invalid JS build #143

Open patocallaghan opened 3 years ago

patocallaghan commented 3 years ago

Take the example code below:

class Application {
  foo() {
    return bar(`${this.path}/application.js`);
  }
}

The particular line of interest is where we have a template literal.

return bar(`${this.path}/application.js`);

When we try to fingerprint this template literal string with some prepend URL it causes invalid JavaScript to be generated in the output.

{
  extensions: ['js', 'json', 'css', 'png', 'jpg', 'gif', 'map'],
  prepend: 'https://static.assets.com/ember/'
}

Expected

return bar(`https://static.assets.com/ember/${this.path}/application.js`);

Actual

return bar(https://static.assets.com/ember/`${this.path}/application.js`);

Notice the backtick to start the prepended string is at the end and not at the start of the fingerprint. This causes the JS to blow up when loaded in a browser.

Reproduction:

PR with failing test

patocallaghan commented 3 years ago

Ah it appears this is due to broccoli-asset-rewrite and there is already an opened issue and potential PR fix over there. Should I leave this open here for visibility?