@@ -187,13 +187,25 @@ export class PlatformService extends EventEmitter implements IPlatformService {
187
187
return _ . filter ( this . $platformsData . platformsNames , p => { return this . isPlatformPrepared ( p , projectData ) ; } ) ;
188
188
}
189
189
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 > {
191
199
const platformData = this . $platformsData . getPlatformData ( platformInfo . platform , platformInfo . projectData ) ;
192
200
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 } ) ;
195
207
196
- if ( changesInfo . hasChanges || requiresNativePrepare ) {
208
+ if ( shouldPrepare ) {
197
209
// Always clear up the app directory in platforms if `--bundle` value has changed in between builds or is passed in general
198
210
// this is done as user has full control over what goes in platforms when `--bundle` is passed
199
211
// and we may end up with duplicate symbols which would fail the build
0 commit comments