diff --git a/packages/@ngtools/webpack/src/transformers/replace_resources.spec.ts b/packages/@ngtools/webpack/src/transformers/replace_resources.spec.ts index 0382d746c96f..d3c454e00d33 100644 --- a/packages/@ngtools/webpack/src/transformers/replace_resources.spec.ts +++ b/packages/@ngtools/webpack/src/transformers/replace_resources.spec.ts @@ -41,6 +41,43 @@ describe('@ngtools/webpack transformers', () => { expect(oneLine`${result}`).toEqual(oneLine`${output}`); }); + it('should replace resources with backticks', () => { + const input = stripIndent` + import { Component } from '@angular/core'; + + @Component({ + selector: 'app-root', + templateUrl: \`./app.component.html\`, + styleUrls: [\`./app.component.css\`, \`./app.component.2.css\`] + }) + export class AppComponent { + title = 'app'; + } + `; + const output = stripIndent` + import * as tslib_1 from "tslib"; + import { Component } from '@angular/core'; + let AppComponent = class AppComponent { + constructor() { + this.title = 'app'; + } + }; + AppComponent = tslib_1.__decorate([ + Component({ + selector: 'app-root', + template: require("./app.component.html"), + styles: [require("./app.component.css"), require("./app.component.2.css")] + }) + ], AppComponent); + export { AppComponent }; + `; + + const transformer = replaceResources(() => true); + const result = transformTypescript(input, [transformer]); + + expect(oneLine`${result}`).toEqual(oneLine`${output}`); + }); + it('should not replace resources if shouldTransform returns false', () => { const input = stripIndent` import { Component } from '@angular/core'; diff --git a/packages/@ngtools/webpack/src/transformers/replace_resources.ts b/packages/@ngtools/webpack/src/transformers/replace_resources.ts index 7d206e809b19..875ee464856e 100644 --- a/packages/@ngtools/webpack/src/transformers/replace_resources.ts +++ b/packages/@ngtools/webpack/src/transformers/replace_resources.ts @@ -131,7 +131,10 @@ function _getContentOfKeyLiteral(node?: ts.Node): string | null { } function _getResourceRequest(element: ts.Expression, sourceFile: ts.SourceFile) { - if (element.kind == ts.SyntaxKind.StringLiteral) { + if ( + element.kind === ts.SyntaxKind.StringLiteral || + element.kind === ts.SyntaxKind.NoSubstitutionTemplateLiteral + ) { const url = (element as ts.StringLiteral).text; // If the URL does not start with ./ or ../, prepends ./ to it. return `${/^\.?\.\//.test(url) ? '' : './'}${url}`;