@angular-builders/dev-server
Version:
Dev server generic builder for Angular build facade. Allows to run custom builder in serve target
39 lines • 2.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const build_angular_1 = require("@angular-devkit/build-angular");
const operators_1 = require("rxjs/operators");
const webpack_config_retriever_1 = require("../webpack-config-retriever");
const lodash_1 = require("lodash");
class GenericDevServerBuilder extends build_angular_1.DevServerBuilder {
constructor(context) {
super(context);
this.buildServerConfig = (devServerConfig) => (root, options, browserOptions) => {
const angularDevServerConfig = build_angular_1.DevServerBuilder.prototype['_buildServerConfig'].call(this, root, options, browserOptions);
if (devServerConfig) {
lodash_1.merge(angularDevServerConfig, devServerConfig);
}
return angularDevServerConfig;
};
}
run(builderConfig) {
const architect = this.context.architect;
const [project, target, configuration] = builderConfig.options.browserTarget.split(':');
const targetSpec = { project, target, configuration };
const targetConfig = architect.getBuilderConfiguration(targetSpec);
// Before we run the dev server grab the target builder so that we have it synchronously
// when we're ready to build the webpack config.
return architect.getBuilderDescription(targetConfig).pipe(operators_1.tap((targetDescription) => this.targetBuilder = architect.getBuilder(targetDescription, this.context)), operators_1.switchMap(() => super.run(builderConfig)));
}
buildWebpackConfig(root, projectRoot, host, browserOptions) {
// Check if we can use the generic webpack builder if so lets use it, otherwise we'll fall back to the DevServerBuilder's
// implementation
const webpackConfig = webpack_config_retriever_1.WebpackConfigRetriever.getTargetBuilderWebpackConfig(this.targetBuilder, root, projectRoot, host, browserOptions)
|| super.buildWebpackConfig(root, projectRoot, host, browserOptions);
//Hack to override private base method _buildServerConfig
this['_buildServerConfig'] = this.buildServerConfig(webpackConfig['devServer']);
return webpackConfig;
}
}
exports.GenericDevServerBuilder = GenericDevServerBuilder;
exports.default = GenericDevServerBuilder;
//# sourceMappingURL=index.js.map
;