From fa49c4a121379fc8bbee32808ddc6c81fe49bad2 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Fri, 3 Aug 2018 19:35:34 +0200 Subject: [PATCH] fix(@angular-devkit/build-angular): remove inlining of font files Inlining font files which are less than 10KB in CSS causes some issues; 1. Fonts get downloaded with the stylesheet rather than one first usage. Since CSS resources get downloaded lazily. 2. Differnt font files are used by different browsers. For instance `woff2` cannot be used by older `IOS`, which means extra data over the wire that cannot be used. 3. When using a lot of font variants and there are under 10Kb, it quickly adds up to the bundle size. 4. Considering also `HTTP2` not inlining recouces might be also be more befenifcial in some cases. --- .../models/webpack-configs/styles.ts | 2 +- .../test/browser/styles_spec_large.ts | 41 ++++++++++++++++++ .../hello-world-app/src/roboto-regular.ttf | Bin 0 -> 19876 bytes .../hello-world-app/src/roboto-regular.woff | Bin 0 -> 13308 bytes .../hello-world-app/src/roboto-regular.woff2 | Bin 0 -> 10196 bytes 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tests/angular_devkit/build_angular/hello-world-app/src/roboto-regular.ttf create mode 100644 tests/angular_devkit/build_angular/hello-world-app/src/roboto-regular.woff create mode 100644 tests/angular_devkit/build_angular/hello-world-app/src/roboto-regular.woff2 diff --git a/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/styles.ts b/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/styles.ts index 32b0f388f5e7..dd54ea4ad7ac 100644 --- a/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/styles.ts +++ b/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/styles.ts @@ -139,7 +139,7 @@ export function getStylesConfig(wco: WebpackConfigOptions) { { // TODO: inline .cur if not supporting IE (use browserslist to check) filter: (asset: PostcssUrlAsset) => { - return maximumInlineSize > 0 && !asset.hash && !asset.absolutePath.endsWith('.cur'); + return maximumInlineSize > 0 && !asset.hash && !/\.(cur|otf|ttf|woff|woff2)$/.test(asset.absolutePath); }, url: 'inline', // NOTE: maxSize is in KB diff --git a/packages/angular_devkit/build_angular/test/browser/styles_spec_large.ts b/packages/angular_devkit/build_angular/test/browser/styles_spec_large.ts index 091c9291129b..653bb45f7125 100644 --- a/packages/angular_devkit/build_angular/test/browser/styles_spec_large.ts +++ b/packages/angular_devkit/build_angular/test/browser/styles_spec_large.ts @@ -334,6 +334,47 @@ describe('Browser Builder styles', () => { ).toPromise().then(done, done.fail); }); + it('should not inline font resources', (done) => { + host.writeMultipleFiles({ + 'src/styles.scss': ` + @font-face{ + font-family:'Roboto'; + font-style:normal; + font-weight:400; + src:local("Roboto"),local("Roboto-Regular"), + url('./roboto-regular.woff2') format("woff2"), + url('./roboto-regular.woff') format("woff"), + url('./roboto-regular.ttf') format("truetype") + } + + a { + font-family: 'Roboto' + } + `, + }); + + const overrides = { + extractCss: true, + styles: [`src/styles.scss`], + }; + + runTargetSpec(host, browserTargetSpec, overrides).pipe( + tap((buildEvent) => expect(buildEvent.success).toBe(true)), + tap(() => { + const fileName = 'dist/styles.css'; + const content = virtualFs.fileBufferToString(host.scopedSync().read(normalize(fileName))); + expect(content).toContain('roboto-regular.woff'); + expect(content).toContain('roboto-regular.ttf'); + expect(content).toContain('roboto-regular.woff2'); + }), + tap(() => { + expect(host.scopedSync().exists(normalize('dist/roboto-regular.woff2'))).toBe(true); + expect(host.scopedSync().exists(normalize('dist/roboto-regular.woff'))).toBe(true); + expect(host.scopedSync().exists(normalize('dist/roboto-regular.ttf'))).toBe(true); + }), + ).toPromise().then(done, done.fail); + }); + it(`supports font-awesome imports`, (done) => { host.writeMultipleFiles({ 'src/styles.scss': ` diff --git a/tests/angular_devkit/build_angular/hello-world-app/src/roboto-regular.ttf b/tests/angular_devkit/build_angular/hello-world-app/src/roboto-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..05037ed5e53b8df59ee1edf9c6f6f8996932347c GIT binary patch literal 19876 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�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 literal 0 HcmV?d00001 diff --git a/tests/angular_devkit/build_angular/hello-world-app/src/roboto-regular.woff b/tests/angular_devkit/build_angular/hello-world-app/src/roboto-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..5e353cf47a872d196e9894c8e86aa8a39afc8b5a GIT binary patch literal 13308 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 literal 0 HcmV?d00001 diff --git a/tests/angular_devkit/build_angular/hello-world-app/src/roboto-regular.woff2 b/tests/angular_devkit/build_angular/hello-world-app/src/roboto-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..96a601550e3c72923d4e1a7ea152c9f0f8f0af36 GIT binary patch literal 10196 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