diff --git a/src/cli/options/create-minimist-options.js b/src/cli/options/create-minimist-options.js index 153f68494..2bdfd60bd 100644 --- a/src/cli/options/create-minimist-options.js +++ b/src/cli/options/create-minimist-options.js @@ -1,6 +1,9 @@ export default function createMinimistOptions(detailedOptions) { const booleanNames = []; - const stringNames = []; + // Numeric-looking arguments will be returned as numbers unless opts.string or opts.boolean contains that argument name. + // To disable numeric conversion for non-option arguments, add '_' to opts.string. + // https://github.com/minimistjs/minimist#const-argv--parseargsargs-opts + const stringNames = ["_"]; const defaultValues = {}; for (const option of detailedOptions) { diff --git a/src/cli/options/parse-cli-arguments.js b/src/cli/options/parse-cli-arguments.js index 7681e9249..93696179c 100644 --- a/src/cli/options/parse-cli-arguments.js +++ b/src/cli/options/parse-cli-arguments.js @@ -28,7 +28,7 @@ function parseArgv(rawArguments, detailedOptions, logger, keys) { return [option.forwardToApi || camelCase(key), value]; }), ), - _: normalized._?.map(String), + _: normalized._, get __raw() { return argv; }, diff --git a/tests/integration/__tests__/__snapshots__/arg-parsing.js.snap b/tests/integration/__tests__/__snapshots__/arg-parsing.js.snap index 011239569..e8f4d8da1 100644 --- a/tests/integration/__tests__/__snapshots__/arg-parsing.js.snap +++ b/tests/integration/__tests__/__snapshots__/arg-parsing.js.snap @@ -56,11 +56,18 @@ exports[`number file/dir 4`] = ` `; exports[`number file/dir 5`] = ` +{ + "stdout": "1e3", +} +`; + +exports[`number file/dir 6`] = ` { "stdout": "1/file-in-dir-named-1.js 2.2/file-in-dir-named-2.2.js 3 -4.44", +4.44 +1e3", } `; diff --git a/tests/integration/__tests__/arg-parsing.js b/tests/integration/__tests__/arg-parsing.js index fa5a0c72a..e56102447 100644 --- a/tests/integration/__tests__/arg-parsing.js +++ b/tests/integration/__tests__/arg-parsing.js @@ -61,7 +61,7 @@ describe("allow overriding flags", () => { }); describe("number file/dir", () => { - const patterns = ["1", "2.2", "3", "4.44"]; + const patterns = ["1", "2.2", "3", "4.44", "1e3"]; for (const pattern of patterns) { runCli("cli/arg-parsing/number", [ "--parser=babel", diff --git a/tests/integration/cli/arg-parsing/number/1e3 b/tests/integration/cli/arg-parsing/number/1e3 new file mode 100644 index 000000000..dba3dc01a --- /dev/null +++ b/tests/integration/cli/arg-parsing/number/1e3 @@ -0,0 +1,2 @@ +hello( + 'prettier')