From 1e3c6e3ca5ffe481ac3e2400893a4fed80e6af98 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 11 Mar 2019 10:38:54 +0100 Subject: [PATCH] fix(@angular-devkit/build-angular): fix base href insertion when HTML is in a single line When HTML is in a single line using offset + 1 will cause the insertion of the base href tag in the wrong possition. Fixes #13851 --- .../plugins/index-html-webpack-plugin.ts | 2 +- .../test/browser/base-href2_spec_large.ts | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/index-html-webpack-plugin.ts b/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/index-html-webpack-plugin.ts index e857564212..f6e3915f84 100644 --- a/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/index-html-webpack-plugin.ts +++ b/packages/angular_devkit/build_angular/src/angular-cli-files/plugins/index-html-webpack-plugin.ts @@ -199,7 +199,7 @@ export class IndexHtmlWebpackPlugin { treeAdapter.appendChild(baseFragment, baseElement); indexSource.insert( - headElement.__location.startTag.endOffset + 1, + headElement.__location.startTag.endOffset, parse5.serialize(baseFragment, { treeAdapter }), ); } else { diff --git a/packages/angular_devkit/build_angular/test/browser/base-href2_spec_large.ts b/packages/angular_devkit/build_angular/test/browser/base-href2_spec_large.ts index f5a525b5dc..59a57a6ae3 100644 --- a/packages/angular_devkit/build_angular/test/browser/base-href2_spec_large.ts +++ b/packages/angular_devkit/build_angular/test/browser/base-href2_spec_large.ts @@ -8,7 +8,7 @@ import { Architect } from '@angular-devkit/architect/src/index2'; import { runTargetSpec } from '@angular-devkit/architect/testing'; -import { join, normalize, virtualFs } from '@angular-devkit/core'; +import { join, normalize, tags, virtualFs } from '@angular-devkit/core'; import { tap } from 'rxjs/operators'; import { BrowserBuilderOutput } from '../../src/browser/index2'; import { browserTargetSpec, createArchitect, host } from '../utils'; @@ -41,4 +41,22 @@ describe('Browser Builder base href', () => { await run.stop(); }); + + it('should insert base href in the the correct position', async () => { + host.writeMultipleFiles({ + 'src/index.html': tags.oneLine` + + + `, + }); + + const overrides = { baseHref: '/myUrl' }; + const run = await architect.scheduleTarget(targetSpec, overrides); + const output = await run.result as BrowserBuilderOutput; + expect(output.success).toBe(true); + const fileName = join(normalize(output.outputPath), 'index.html'); + const content = virtualFs.fileBufferToString(await host.read(normalize(fileName)).toPromise()); + expect(content).toContain(''); + await run.stop(); + }); });