diff --git a/builders/cordova-serve/index.ts b/builders/cordova-serve/index.ts index 1c80223..7754bbb 100644 --- a/builders/cordova-serve/index.ts +++ b/builders/cordova-serve/index.ts @@ -20,34 +20,38 @@ export class CordovaServeBuilder implements Builder { const devServerBuilderConfig = this.context.architect.getBuilderConfiguration(devServerTargetSpec); let devServerDescription: BuilderDescription; + let cordovaBuildConfig: BuilderConfiguration; return this.context.architect.getBuilderDescription(devServerBuilderConfig).pipe( tap(description => devServerDescription = description), concatMap(() => this.context.architect.validateBuilderOptions(devServerBuilderConfig, devServerDescription)), - concatMap(() => of(new CordovaDevServerBuilder(this.context, builderConfig.options))), - // concatMap(() => of(this.context.architect.getBuilder(devServerDescription, this.context))), + concatMap(() => this._getCordovaBuildConfig(builderConfig.options)), + tap(config => cordovaBuildConfig = config), + concatMap(() => of(new CordovaDevServerBuilder(this.context, cordovaBuildConfig.options))), concatMap(builder => builder.run(devServerBuilderConfig)) ); } + + protected _getCordovaBuildConfig(cordovaServeOptions: CordovaServeBuilderSchema): Observable> { + const { platform } = cordovaServeOptions; + const [ project, target, configuration ] = cordovaServeOptions.cordovaBuildTarget.split(':'); + const cordovaBuildTargetSpec = { project, target, configuration, overrides: { platform } }; + const cordovaBuildTargetConfig = this.context.architect.getBuilderConfiguration(cordovaBuildTargetSpec); + + return this.context.architect.getBuilderDescription(cordovaBuildTargetConfig).pipe( + concatMap(cordovaBuildDescription => this.context.architect.validateBuilderOptions(cordovaBuildTargetConfig, cordovaBuildDescription)) + ); + } } class CordovaDevServerBuilder extends DevServerBuilder { - constructor(context: BuilderContext, public cordovaServeOptions: CordovaServeBuilderSchema) { + constructor(context: BuilderContext, public cordovaBuildOptions: CordovaBuildBuilderSchema) { super(context); } - // run(builderConfig: BuilderConfiguration): Observable { - // return super.run(builderConfig); - // } - buildWebpackConfig(root: Path, projectRoot: Path, host: virtualFs.Host<ζfs.Stats>, browserOptions: BrowserBuilderSchema) { - const { platform } = this.cordovaServeOptions; - const [ project, target, configuration ] = this.cordovaServeOptions.cordovaBuildTarget.split(':'); - const cordovaBuildTargetSpec = { project, target, configuration, overrides: { platform } }; - const cordovaBuildTargetConfig = this.context.architect.getBuilderConfiguration(cordovaBuildTargetSpec); - const builder = new CordovaBuildBuilder(this.context); - builder.prepareBrowserConfig(cordovaBuildTargetConfig.options, browserOptions); + builder.prepareBrowserConfig(this.cordovaBuildOptions, browserOptions); return super.buildWebpackConfig(root, projectRoot, host, browserOptions); }