diff --git a/packages/babel-node/src/_babel-node.js b/packages/babel-node/src/_babel-node.js index cb5e0210f8..8583c2a7fb 100644 --- a/packages/babel-node/src/_babel-node.js +++ b/packages/babel-node/src/_babel-node.js @@ -22,6 +22,7 @@ function collect(value, previousValue): Array { } program.option("-e, --eval [script]", "Evaluate script"); +program.option("-r, --require [module]", "Require module"); program.option("-p, --print [code]", "Evaluate script and print result"); program.option( "-o, --only [globs]", @@ -130,7 +131,11 @@ if (program.eval || program.print) { if (arg[0] === "-") { const parsedArg = program[arg.slice(2)]; - if (parsedArg && parsedArg !== true) { + if ( + arg === "-r" || + arg === "--require" || + (parsedArg && parsedArg !== true) + ) { ignoreNext = true; } } else { @@ -140,6 +145,15 @@ if (program.eval || program.print) { }); args = args.slice(i); + // We have to handle require ourselfs, as we want to require it in the context of babel-register + if (program.require) { + let requireFileName = program.require; + if (!path.isAbsolute(requireFileName)) { + requireFileName = path.join(process.cwd(), requireFileName); + } + require(requireFileName); + } + // make the filename absolute const filename = args[0]; if (!path.isAbsolute(filename)) { diff --git a/packages/babel-node/src/babel-node.js b/packages/babel-node/src/babel-node.js index 31e3634a1a..cb3f20ab85 100755 --- a/packages/babel-node/src/babel-node.js +++ b/packages/babel-node/src/babel-node.js @@ -34,7 +34,7 @@ function getNormalizedV8Flag(arg) { } getV8Flags(function(err, v8Flags) { - babelArgs.forEach(function(arg) { + babelArgs.forEach(function(arg, index) { const flag = arg.split("=")[0]; switch (flag) { @@ -50,6 +50,13 @@ getV8Flags(function(err, v8Flags) { args.unshift(arg); break; + case "-r": + case "--require": + args.push(flag); + args.push(babelArgs[index + 1]); + delete babelArgs[index + 1]; + break; + case "-gc": args.unshift("--expose-gc"); break;