broccoli-asset-rev
broccoli-asset-rev copied to clipboard
Template Literals + `prepend` doesn't work correctly and results in invalid JS build
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:
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?