UNPKG

@farris/build-angular

Version:

Angular Webpack Build Facade

41 lines 5.75 kB
"use strict"; /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ // tslint:disable // TODO: cleanup this file, it's copied as is from Angular CLI. Object.defineProperty(exports, "__esModule", { value: true }); class BaseHrefWebpackPlugin { constructor(options) { this.options = options; } apply(compiler) { // Ignore if baseHref is not passed if (!this.options.baseHref && this.options.baseHref !== '') { return; } compiler.plugin('compilation', (compilation) => { compilation.plugin('html-webpack-plugin-before-html-processing', (htmlPluginData, callback) => { // Check if base tag already exists const baseTagRegex = /<base.*?>/i; const baseTagMatches = htmlPluginData.html.match(baseTagRegex); if (!baseTagMatches) { // Insert it in top of the head if not exist htmlPluginData.html = htmlPluginData.html.replace(/<head>/i, '$&' + `<base href="${this.options.baseHref}">`); } else { // Replace only href attribute if exists const modifiedBaseTag = baseTagMatches[0].replace(/href="\S*?"/i, `href="${this.options.baseHref}"`); htmlPluginData.html = htmlPluginData.html.replace(baseTagRegex, modifiedBaseTag); } callback(null, htmlPluginData); }); }); } } exports.BaseHrefWebpackPlugin = BaseHrefWebpackPlugin; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ocmVmLXdlYnBhY2stcGx1Z2luLmpzIiwic291cmNlUm9vdCI6Ii4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9mYXJyaXNfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2FuZ3VsYXItY2xpLWZpbGVzL2xpYi9iYXNlLWhyZWYtd2VicGFjay9iYXNlLWhyZWYtd2VicGFjay1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRztBQUNILGlCQUFpQjtBQUNqQiwrREFBK0Q7O0FBTS9EO0lBQ0UsWUFBNEIsT0FBcUM7UUFBckMsWUFBTyxHQUFQLE9BQU8sQ0FBOEI7SUFBSSxDQUFDO0lBRXRFLEtBQUssQ0FBQyxRQUFhO1FBQ2pCLG1DQUFtQztRQUNuQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFDO1FBQ1QsQ0FBQztRQUVELFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsV0FBZ0IsRUFBRSxFQUFFO1lBQ2xELFdBQVcsQ0FBQyxNQUFNLENBQ2hCLDRDQUE0QyxFQUM1QyxDQUFDLGNBQW1CLEVBQUUsUUFBa0IsRUFBRSxFQUFFO2dCQUMxQyxtQ0FBbUM7Z0JBQ25DLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQztnQkFDbEMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQy9ELEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztvQkFDcEIsNENBQTRDO29CQUM1QyxjQUFjLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUMvQyxTQUFTLEVBQUUsSUFBSSxHQUFHLGVBQWUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FDM0QsQ0FBQztnQkFDSixDQUFDO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNOLHdDQUF3QztvQkFDeEMsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDL0MsY0FBYyxFQUFFLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FDbEQsQ0FBQztvQkFDRixjQUFjLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDbkYsQ0FBQztnQkFFRCxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFsQ0Qsc0RBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuLy8gdHNsaW50OmRpc2FibGVcbi8vIFRPRE86IGNsZWFudXAgdGhpcyBmaWxlLCBpdCdzIGNvcGllZCBhcyBpcyBmcm9tIEFuZ3VsYXIgQ0xJLlxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VIcmVmV2VicGFja1BsdWdpbk9wdGlvbnMge1xuICBiYXNlSHJlZjogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQmFzZUhyZWZXZWJwYWNrUGx1Z2luIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IG9wdGlvbnM6IEJhc2VIcmVmV2VicGFja1BsdWdpbk9wdGlvbnMpIHsgfVxuXG4gIGFwcGx5KGNvbXBpbGVyOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBJZ25vcmUgaWYgYmFzZUhyZWYgaXMgbm90IHBhc3NlZFxuICAgIGlmICghdGhpcy5vcHRpb25zLmJhc2VIcmVmICYmIHRoaXMub3B0aW9ucy5iYXNlSHJlZiAhPT0gJycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb21waWxlci5wbHVnaW4oJ2NvbXBpbGF0aW9uJywgKGNvbXBpbGF0aW9uOiBhbnkpID0+IHtcbiAgICAgIGNvbXBpbGF0aW9uLnBsdWdpbihcbiAgICAgICAgJ2h0bWwtd2VicGFjay1wbHVnaW4tYmVmb3JlLWh0bWwtcHJvY2Vzc2luZycsXG4gICAgICAgIChodG1sUGx1Z2luRGF0YTogYW55LCBjYWxsYmFjazogRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICAvLyBDaGVjayBpZiBiYXNlIHRhZyBhbHJlYWR5IGV4aXN0c1xuICAgICAgICAgIGNvbnN0IGJhc2VUYWdSZWdleCA9IC88YmFzZS4qPz4vaTtcbiAgICAgICAgICBjb25zdCBiYXNlVGFnTWF0Y2hlcyA9IGh0bWxQbHVnaW5EYXRhLmh0bWwubWF0Y2goYmFzZVRhZ1JlZ2V4KTtcbiAgICAgICAgICBpZiAoIWJhc2VUYWdNYXRjaGVzKSB7XG4gICAgICAgICAgICAvLyBJbnNlcnQgaXQgaW4gdG9wIG9mIHRoZSBoZWFkIGlmIG5vdCBleGlzdFxuICAgICAgICAgICAgaHRtbFBsdWdpbkRhdGEuaHRtbCA9IGh0bWxQbHVnaW5EYXRhLmh0bWwucmVwbGFjZShcbiAgICAgICAgICAgICAgLzxoZWFkPi9pLCAnJCYnICsgYDxiYXNlIGhyZWY9XCIke3RoaXMub3B0aW9ucy5iYXNlSHJlZn1cIj5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBSZXBsYWNlIG9ubHkgaHJlZiBhdHRyaWJ1dGUgaWYgZXhpc3RzXG4gICAgICAgICAgICBjb25zdCBtb2RpZmllZEJhc2VUYWcgPSBiYXNlVGFnTWF0Y2hlc1swXS5yZXBsYWNlKFxuICAgICAgICAgICAgICAvaHJlZj1cIlxcUyo/XCIvaSwgYGhyZWY9XCIke3RoaXMub3B0aW9ucy5iYXNlSHJlZn1cImBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBodG1sUGx1Z2luRGF0YS5odG1sID0gaHRtbFBsdWdpbkRhdGEuaHRtbC5yZXBsYWNlKGJhc2VUYWdSZWdleCwgbW9kaWZpZWRCYXNlVGFnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYWxsYmFjayhudWxsLCBodG1sUGx1Z2luRGF0YSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==