From 6a42330c077d2c686569456902a7cf16d171e167 Mon Sep 17 00:00:00 2001 From: Bogdan Chadkin Date: Tue, 4 Sep 2018 02:28:22 +0300 Subject: [PATCH 1/2] Make dir for babel --out-file Currently there's unexpected regression after upgrade from babel 6. On creating file with any depth like dist/index.js the error about not existing directory is thrown. In this diff I modified babel-cli to create deep directory for out-file command. I also replaced `mkdirp` with more supported `make-dir` package which also have official promise support. --- packages/babel-cli/package.json | 2 +- packages/babel-cli/src/babel/dir.js | 4 ++-- packages/babel-cli/src/babel/file.js | 3 +++ .../babel/filename --out-file deep/in-files/script.js | 1 + .../test/fixtures/babel/filename --out-file deep/options.json | 3 +++ packages/babel-register/package.json | 2 +- packages/babel-register/src/cache.js | 4 ++-- 7 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 packages/babel-cli/test/fixtures/babel/filename --out-file deep/in-files/script.js create mode 100644 packages/babel-cli/test/fixtures/babel/filename --out-file deep/options.json diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json index 4e42d3ca83e5..7e8de8bcb9c9 100644 --- a/packages/babel-cli/package.json +++ b/packages/babel-cli/package.json @@ -24,7 +24,7 @@ "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", "lodash": "^4.17.13", - "mkdirp": "^0.5.1", + "make-dir": "^2.1.0", "output-file-sync": "^2.0.0", "slash": "^2.0.0", "source-map": "^0.5.0" diff --git a/packages/babel-cli/src/babel/dir.js b/packages/babel-cli/src/babel/dir.js index 32136b78f02a..4e2839750507 100644 --- a/packages/babel-cli/src/babel/dir.js +++ b/packages/babel-cli/src/babel/dir.js @@ -2,7 +2,7 @@ import defaults from "lodash/defaults"; import outputFileSync from "output-file-sync"; -import { sync as mkdirpSync } from "mkdirp"; +import { sync as makeDirSync } from "make-dir"; import slash from "slash"; import path from "path"; import fs from "fs"; @@ -122,7 +122,7 @@ export default async function({ util.deleteDir(cliOptions.outDir); } - mkdirpSync(cliOptions.outDir); + makeDirSync(cliOptions.outDir); let compiledFiles = 0; for (const filename of cliOptions.filenames) { diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js index 7c38d3052f3d..23b0307cc884 100644 --- a/packages/babel-cli/src/babel/file.js +++ b/packages/babel-cli/src/babel/file.js @@ -4,6 +4,7 @@ import convertSourceMap from "convert-source-map"; import defaults from "lodash/defaults"; import sourceMap from "source-map"; import slash from "slash"; +import { sync as makeDirSync } from "make-dir"; import path from "path"; import fs from "fs"; @@ -89,6 +90,8 @@ export default async function({ const result = buildResult(fileResults); if (cliOptions.outFile) { + makeDirSync(path.dirname(cliOptions.outFile)); + // we've requested for a sourcemap to be written to disk if (babelOptions.sourceMaps && babelOptions.sourceMaps !== "inline") { const mapLoc = cliOptions.outFile + ".map"; diff --git a/packages/babel-cli/test/fixtures/babel/filename --out-file deep/in-files/script.js b/packages/babel-cli/test/fixtures/babel/filename --out-file deep/in-files/script.js new file mode 100644 index 000000000000..4bc9539528d4 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/filename --out-file deep/in-files/script.js @@ -0,0 +1 @@ +arr.map(x => x * MULTIPLIER); diff --git a/packages/babel-cli/test/fixtures/babel/filename --out-file deep/options.json b/packages/babel-cli/test/fixtures/babel/filename --out-file deep/options.json new file mode 100644 index 000000000000..433f982f9921 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/filename --out-file deep/options.json @@ -0,0 +1,3 @@ +{ + "args": ["script.js", "--out-file", "dist/nested/script.js"] +} diff --git a/packages/babel-register/package.json b/packages/babel-register/package.json index 6a768833622d..466ba1d54523 100644 --- a/packages/babel-register/package.json +++ b/packages/babel-register/package.json @@ -15,7 +15,7 @@ "dependencies": { "find-cache-dir": "^2.0.0", "lodash": "^4.17.13", - "mkdirp": "^0.5.1", + "make-dir": "^2.1.0", "pirates": "^4.0.0", "source-map-support": "^0.5.9" }, diff --git a/packages/babel-register/src/cache.js b/packages/babel-register/src/cache.js index 0a2983b89aa2..b505bb4943c7 100644 --- a/packages/babel-register/src/cache.js +++ b/packages/babel-register/src/cache.js @@ -1,7 +1,7 @@ import path from "path"; import fs from "fs"; import os from "os"; -import { sync as mkdirpSync } from "mkdirp"; +import { sync as makeDirSync } from "make-dir"; import * as babel from "@babel/core"; import findCacheDir from "find-cache-dir"; @@ -39,7 +39,7 @@ export function save() { } try { - mkdirpSync(path.dirname(FILENAME)); + makeDirSync(path.dirname(FILENAME)); fs.writeFileSync(FILENAME, serialised); } catch (e) { switch (e.code) { From 4ab776a99cad0efed1f047e1390cad84d6a359aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 17 Oct 2019 23:44:24 +0200 Subject: [PATCH 2/2] Fix test --- .../fixtures/babel/filename --out-file deep/options.json | 2 +- .../out-files/folder/nested/script.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 packages/babel-cli/test/fixtures/babel/filename --out-file deep/out-files/folder/nested/script.js diff --git a/packages/babel-cli/test/fixtures/babel/filename --out-file deep/options.json b/packages/babel-cli/test/fixtures/babel/filename --out-file deep/options.json index 433f982f9921..d24719ba4a76 100644 --- a/packages/babel-cli/test/fixtures/babel/filename --out-file deep/options.json +++ b/packages/babel-cli/test/fixtures/babel/filename --out-file deep/options.json @@ -1,3 +1,3 @@ { - "args": ["script.js", "--out-file", "dist/nested/script.js"] + "args": ["script.js", "--out-file", "folder/nested/script.js"] } diff --git a/packages/babel-cli/test/fixtures/babel/filename --out-file deep/out-files/folder/nested/script.js b/packages/babel-cli/test/fixtures/babel/filename --out-file deep/out-files/folder/nested/script.js new file mode 100644 index 000000000000..ae4557e57bc3 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/filename --out-file deep/out-files/folder/nested/script.js @@ -0,0 +1,5 @@ +"use strict"; + +arr.map(function (x) { + return x * MULTIPLIER; +});