@farris/build-angular
Version:
Angular Webpack Build Facade
41 lines • 5.75 kB
JavaScript
;
/**
* @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==