@@ -11,9 +11,11 @@ var copyTree = require('../../shared/log/copy-tree');
11
11
var tildify = require ( '../../shared/tildify' ) ;
12
12
var logTasks = require ( '../../shared/log/tasks' ) ;
13
13
var ansi = require ( '../../shared/ansi' ) ;
14
+ var exit = require ( '../../shared/exit' ) ;
14
15
var logEvents = require ( './log/events' ) ;
15
16
var logTasksSimple = require ( './log/tasks-simple' ) ;
16
17
var registerExports = require ( '../../shared/register-exports' ) ;
18
+ var requireOrImport = require ( '../../shared/require-or-import' ) ;
17
19
18
20
function execute ( opts , env , config ) {
19
21
var tasks = opts . _ ;
@@ -25,20 +27,25 @@ function execute(opts, env, config) {
25
27
}
26
28
27
29
// This is what actually loads up the gulpfile
28
- var exported = require ( env . configPath ) ;
29
- log . info ( 'Using gulpfile' , ansi . magenta ( tildify ( env . configPath ) ) ) ;
30
+ requireOrImport ( env . configPath , function ( err , exported ) {
31
+ // Before import(), if require() failed we got an unhandled exception on the module level.
32
+ // So console.error() & exit() were added here to mimic the old behavior as close as possible.
33
+ if ( err ) {
34
+ console . error ( err ) ;
35
+ exit ( 1 ) ;
36
+ }
30
37
31
- var gulpInst = require ( env . modulePath ) ;
32
- logEvents ( gulpInst ) ;
38
+ log . info ( 'Using gulpfile' , ansi . magenta ( tildify ( env . configPath ) ) ) ;
33
39
34
- registerExports ( gulpInst , exported ) ;
40
+ var gulpInst = require ( env . modulePath ) ;
41
+ logEvents ( gulpInst ) ;
35
42
36
- // Always unmute stdout after gulpfile is required
37
- stdout . unmute ( ) ;
43
+ registerExports ( gulpInst , exported ) ;
38
44
39
- process . nextTick ( function ( ) {
40
- var tree ;
45
+ // Always unmute stdout after gulpfile is required
46
+ stdout . unmute ( ) ;
41
47
48
+ var tree ;
42
49
if ( opts . tasksSimple ) {
43
50
return logTasksSimple ( env , gulpInst ) ;
44
51
}
0 commit comments