@@ -187,13 +187,25 @@ export class PlatformService extends EventEmitter implements IPlatformService {
187187 return _ . filter ( this . $platformsData . platformsNames , p => { return this . isPlatformPrepared ( p , projectData ) ; } ) ;
188188 }
189189
190- public async preparePlatform ( platformInfo : IPreparePlatformInfo ) : Promise < boolean > {
190+ @helpers . hook ( 'shouldPrepare' )
191+ public async shouldPrepare ( shouldPrepareInfo : IShouldPrepareInfo ) : Promise < boolean > {
192+ shouldPrepareInfo . changesInfo = shouldPrepareInfo . changesInfo || await this . getChangesInfo ( shouldPrepareInfo . platformInfo ) ;
193+ const requiresNativePrepare = ( ! shouldPrepareInfo . platformInfo . nativePrepare || ! shouldPrepareInfo . platformInfo . nativePrepare . skipNativePrepare ) && shouldPrepareInfo . changesInfo . nativePlatformStatus === constants . NativePlatformStatus . requiresPrepare ;
194+
195+ return shouldPrepareInfo . changesInfo . hasChanges || requiresNativePrepare ;
196+ }
197+
198+ private async getChangesInfo ( platformInfo : IPreparePlatformInfo ) : Promise < IProjectChangesInfo > {
191199 const platformData = this . $platformsData . getPlatformData ( platformInfo . platform , platformInfo . projectData ) ;
192200
193- const changesInfo = await this . initialPrepare ( platformInfo . platform , platformData , platformInfo . appFilesUpdaterOptions , platformInfo . platformTemplate , platformInfo . projectData , platformInfo . config , platformInfo . nativePrepare , platformInfo ) ;
194- const requiresNativePrepare = ( ! platformInfo . nativePrepare || ! platformInfo . nativePrepare . skipNativePrepare ) && changesInfo . nativePlatformStatus === constants . NativePlatformStatus . requiresPrepare ;
201+ return this . initialPrepare ( platformInfo . platform , platformData , platformInfo . appFilesUpdaterOptions , platformInfo . platformTemplate , platformInfo . projectData , platformInfo . config , platformInfo . nativePrepare , platformInfo ) ;
202+ }
203+
204+ public async preparePlatform ( platformInfo : IPreparePlatformInfo ) : Promise < boolean > {
205+ const changesInfo = await this . getChangesInfo ( platformInfo ) ;
206+ const shouldPrepare = await this . shouldPrepare ( { platformInfo, changesInfo } ) ;
195207
196- if ( changesInfo . hasChanges || requiresNativePrepare ) {
208+ if ( shouldPrepare ) {
197209 // Always clear up the app directory in platforms if `--bundle` value has changed in between builds or is passed in general
198210 // this is done as user has full control over what goes in platforms when `--bundle` is passed
199211 // and we may end up with duplicate symbols which would fail the build
0 commit comments