diff --git a/packages/babel-core/src/config/files/configuration.js b/packages/babel-core/src/config/files/configuration.js index 551c4057b466..d534ae7ecee6 100644 --- a/packages/babel-core/src/config/files/configuration.js +++ b/packages/babel-core/src/config/files/configuration.js @@ -305,10 +305,13 @@ export function* resolveShowConfigPath( const targetPath = process.env.BABEL_SHOW_CONFIG_FOR; if (targetPath != null) { const absolutePath = path.resolve(dirname, targetPath); - if (yield* fs.exists(absolutePath)) { - return absolutePath; + const stats = yield* fs.stat(absolutePath); + if (!stats.isFile()) { + throw new Error( + `${absolutePath}: BABEL_SHOW_CONFIG_FOR must refers to a regular file, directory is not supported.`, + ); } - throw new Error(`${absolutePath}: The show config path does not exist.`); + return absolutePath; } return null; } diff --git a/packages/babel-core/src/gensync-utils/fs.js b/packages/babel-core/src/gensync-utils/fs.js index 6b8f60c7b145..172fa6a9d024 100644 --- a/packages/babel-core/src/gensync-utils/fs.js +++ b/packages/babel-core/src/gensync-utils/fs.js @@ -19,3 +19,8 @@ export const exists = gensync<[string], boolean>({ }, errback: (path, cb) => fs.access(path, undefined, err => cb(null, !err)), }); + +export const stat = gensync<[string], *>({ + sync: fs.statSync, + errback: fs.stat, +});