diff --git a/packages/babel-node/package.json b/packages/babel-node/package.json index 35a3ed463235..4faa600d8e63 100644 --- a/packages/babel-node/package.json +++ b/packages/babel-node/package.json @@ -20,7 +20,7 @@ ], "dependencies": { "@babel/register": "^7.7.7", - "commander": "^2.8.1", + "commander": "^4.0.1", "core-js": "^3.2.1", "lodash": "^4.17.13", "node-environment-flags": "^1.0.5", diff --git a/packages/babel-node/src/_babel-node.js b/packages/babel-node/src/_babel-node.js index 8e09639a5dd7..9d472166ba46 100644 --- a/packages/babel-node/src/_babel-node.js +++ b/packages/babel-node/src/_babel-node.js @@ -169,15 +169,15 @@ if (program.eval || program.print) { } if (arg[0] === "-") { - const camelArg = arg - .slice(2) - .replace(/-(\w)/, (s, c) => c.toUpperCase()); - const parsedArg = program[camelArg]; - if ( - arg === "-r" || - arg === "--require" || - (parsedArg && parsedArg !== true) - ) { + const parsedOption = program.options.find(option => { + return option.long === arg || option.short === arg; + }); + if (parsedOption === undefined) { + return; + } + const optionName = parsedOption.attributeName(); + const parsedArg = program[optionName]; + if (optionName === "require" || (parsedArg && parsedArg !== true)) { ignoreNext = true; } } else { diff --git a/packages/babel-node/test/fixtures/babel-node/--presets/in-files/index.js b/packages/babel-node/test/fixtures/babel-node/--presets/in-files/index.js new file mode 100644 index 000000000000..85ce559e8f22 --- /dev/null +++ b/packages/babel-node/test/fixtures/babel-node/--presets/in-files/index.js @@ -0,0 +1 @@ +console.log("foo"); diff --git a/packages/babel-node/test/fixtures/babel-node/--presets/in-files/presetFile.js b/packages/babel-node/test/fixtures/babel-node/--presets/in-files/presetFile.js new file mode 100644 index 000000000000..b2d0556f1398 --- /dev/null +++ b/packages/babel-node/test/fixtures/babel-node/--presets/in-files/presetFile.js @@ -0,0 +1,4 @@ +module.exports = function () { + console.log("Preset was loaded, so --presets was used."); + return {}; +}; diff --git a/packages/babel-node/test/fixtures/babel-node/--presets/options.json b/packages/babel-node/test/fixtures/babel-node/--presets/options.json new file mode 100644 index 000000000000..bd14d5f365b2 --- /dev/null +++ b/packages/babel-node/test/fixtures/babel-node/--presets/options.json @@ -0,0 +1,3 @@ +{ + "args": ["--presets", "./presetFile.js", "index"] +} diff --git a/packages/babel-node/test/fixtures/babel-node/--presets/stdout.txt b/packages/babel-node/test/fixtures/babel-node/--presets/stdout.txt new file mode 100644 index 000000000000..69ccc409d020 --- /dev/null +++ b/packages/babel-node/test/fixtures/babel-node/--presets/stdout.txt @@ -0,0 +1,2 @@ +Preset was loaded, so --presets was used. +foo diff --git a/packages/babel-node/test/fixtures/babel-node/-b/in-files/index.js b/packages/babel-node/test/fixtures/babel-node/-b/in-files/index.js new file mode 100644 index 000000000000..85ce559e8f22 --- /dev/null +++ b/packages/babel-node/test/fixtures/babel-node/-b/in-files/index.js @@ -0,0 +1 @@ +console.log("foo"); diff --git a/packages/babel-node/test/fixtures/babel-node/-b/in-files/presetFile.js b/packages/babel-node/test/fixtures/babel-node/-b/in-files/presetFile.js new file mode 100644 index 000000000000..6e064ea108f2 --- /dev/null +++ b/packages/babel-node/test/fixtures/babel-node/-b/in-files/presetFile.js @@ -0,0 +1,4 @@ +module.exports = function () { + console.log("Preset was loaded, so -b was used."); + return {}; +}; diff --git a/packages/babel-node/test/fixtures/babel-node/-b/options.json b/packages/babel-node/test/fixtures/babel-node/-b/options.json new file mode 100644 index 000000000000..19044775d5e6 --- /dev/null +++ b/packages/babel-node/test/fixtures/babel-node/-b/options.json @@ -0,0 +1,3 @@ +{ + "args": ["-b", "./presetFile.js", "index"] +} diff --git a/packages/babel-node/test/fixtures/babel-node/-b/stdout.txt b/packages/babel-node/test/fixtures/babel-node/-b/stdout.txt new file mode 100644 index 000000000000..29cee3ef1391 --- /dev/null +++ b/packages/babel-node/test/fixtures/babel-node/-b/stdout.txt @@ -0,0 +1,2 @@ +Preset was loaded, so -b was used. +foo