diff --git a/packages/babel-cli/src/babel/dir.js b/packages/babel-cli/src/babel/dir.js index 31c80fbb62..28b2f5bd3c 100644 --- a/packages/babel-cli/src/babel/dir.js +++ b/packages/babel-cli/src/babel/dir.js @@ -63,6 +63,13 @@ export default function(commander, filenames, opts) { return path.join(commander.outDir, filename); } + function outputDestFolder(outDir) { + const outDirPath = path.resolve(outDir); + if (!fs.existsSync(outDirPath)) { + fs.mkdirSync(outDirPath); + } + } + function handleFile(src, filename, base, callback) { if (typeof base === "function") { callback = base; @@ -82,6 +89,11 @@ export default function(commander, filenames, opts) { } function sequentialHandleFile(files, dirname, index, callback) { + if (files.length === 0) { + outputDestFolder(commander.outDir); + return; + } + if (typeof index === "function") { callback = index; index = 0; diff --git a/packages/babel-cli/test/fixtures/babel/empty dir --out-dir/in-files/src/.gitkeep b/packages/babel-cli/test/fixtures/babel/empty dir --out-dir/in-files/src/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/babel-cli/test/fixtures/babel/empty dir --out-dir/options.json b/packages/babel-cli/test/fixtures/babel/empty dir --out-dir/options.json new file mode 100644 index 0000000000..0aeb1496b7 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/empty dir --out-dir/options.json @@ -0,0 +1,3 @@ +{ + "args": ["src", "--out-dir", "lib"] +} diff --git a/packages/babel-cli/test/fixtures/babel/empty dir --out-dir/out-files/src/.gitkeep b/packages/babel-cli/test/fixtures/babel/empty dir --out-dir/out-files/src/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/babel-cli/test/fixtures/babel/empty dir --out-dir/stdout.txt b/packages/babel-cli/test/fixtures/babel/empty dir --out-dir/stdout.txt new file mode 100644 index 0000000000..e69de29bb2