11import * as path from "path" ;
22import * as child_process from "child_process" ;
3+ import * as os from "os" ;
34import { EventEmitter } from "events" ;
45import { performanceLog } from "../../common/decorators" ;
56import { hook } from "../../common/helpers" ;
@@ -12,7 +13,8 @@ export class WebpackCompilerService extends EventEmitter implements IWebpackComp
1213 private $childProcess : IChildProcess ,
1314 public $hooksService : IHooksService ,
1415 private $logger : ILogger ,
15- private $pluginsService : IPluginsService
16+ private $pluginsService : IPluginsService ,
17+ private $mobileHelper : Mobile . IMobileHelper
1618 ) { super ( ) ; }
1719
1820 public async compileWithWatch ( platformData : IPlatformData , projectData : IProjectData , prepareData : IPrepareData ) : Promise < any > {
@@ -103,7 +105,7 @@ export class WebpackCompilerService extends EventEmitter implements IWebpackComp
103105 @hook ( 'prepareJSApp' )
104106 private async startWebpackProcess ( platformData : IPlatformData , projectData : IProjectData , prepareData : IPrepareData ) : Promise < child_process . ChildProcess > {
105107 const envData = this . buildEnvData ( platformData . platformNameLowerCase , projectData , prepareData ) ;
106- const envParams = this . buildEnvCommandLineParams ( envData , platformData ) ;
108+ const envParams = this . buildEnvCommandLineParams ( envData , platformData , prepareData ) ;
107109
108110 await this . $pluginsService . ensureAllDependenciesAreInstalled ( projectData ) ;
109111
@@ -156,13 +158,16 @@ export class WebpackCompilerService extends EventEmitter implements IWebpackComp
156158 return envData ;
157159 }
158160
159- private buildEnvCommandLineParams ( envData : any , platformData : IPlatformData ) {
161+ private buildEnvCommandLineParams ( envData : any , platformData : IPlatformData , prepareData : IPrepareData ) {
160162 const envFlagNames = Object . keys ( envData ) ;
161- // const snapshotEnvIndex = envFlagNames.indexOf("snapshot");
162- // if (snapshotEnvIndex > -1 && !utils.shouldSnapshot(config)) {
163- // logSnapshotWarningMessage($logger);
164- // envFlagNames.splice(snapshotEnvIndex, 1);
165- // }
163+ const snapshotEnvIndex = envFlagNames . indexOf ( "snapshot" ) ;
164+ const shouldSnapshot = prepareData . release && os . type ( ) !== "Windows_NT" && this . $mobileHelper . isAndroidPlatform ( platformData . normalizedPlatformName ) ;
165+ if ( snapshotEnvIndex > - 1 && ! shouldSnapshot ) {
166+ this . $logger . warn ( "Stripping the snapshot flag. " +
167+ "Bear in mind that snapshot is only available in release builds and " +
168+ "is NOT available on Windows systems." ) ;
169+ envFlagNames . splice ( snapshotEnvIndex , 1 ) ;
170+ }
166171
167172 const args : any [ ] = [ ] ;
168173 envFlagNames . map ( item => {
0 commit comments