diff --git a/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts index 6c48c0b1eb34..dcf226dce231 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser/specs/styles_spec.ts @@ -679,4 +679,17 @@ describe('Browser Builder styles', () => { await browserBuild(architect, host, target, { styles: ['src/styles.css'] }); }); + + it('works when Data URI has escaped quote', async () => { + const svgData = `"data:image/svg+xml;charset=utf-8,"`; + + host.writeMultipleFiles({ + 'src/styles.css': ` + div { background: url(${svgData}) } + `, + }); + + const result = await browserBuild(architect, host, target, { styles: ['src/styles.css'] }); + expect(await result.files['styles.css']).toContain(svgData); + }); }); diff --git a/packages/angular_devkit/build_angular/src/webpack/plugins/postcss-cli-resources.ts b/packages/angular_devkit/build_angular/src/webpack/plugins/postcss-cli-resources.ts index 1a6cadf7200a..ed78cb632a5b 100644 --- a/packages/angular_devkit/build_angular/src/webpack/plugins/postcss-cli-resources.ts +++ b/packages/angular_devkit/build_angular/src/webpack/plugins/postcss-cli-resources.ts @@ -155,7 +155,7 @@ export default function (options?: PostcssCliResourcesOptions): Plugin { } const value = decl.value; - const urlRegex = /url\(\s*(?:"([^"]+)"|'([^']+)'|(.+?))\s*\)/g; + const urlRegex = /url(?:\(\s*['"]?)(.*?)(?:['"]?\s*\))/g; const segments: string[] = []; let match; @@ -168,7 +168,7 @@ export default function (options?: PostcssCliResourcesOptions): Plugin { // eslint-disable-next-line no-cond-assign while ((match = urlRegex.exec(value))) { - const originalUrl = match[1] || match[2] || match[3]; + const originalUrl = match[1]; let processedUrl; try { processedUrl = await process(originalUrl, context, resourceCache);