From 605321c30c8cd4b36bf39255fc1ec28fbbb554df Mon Sep 17 00:00:00 2001 From: Boopathi Rajaa Date: Fri, 18 Aug 2017 23:54:29 +0200 Subject: [PATCH] Fix ext name check + Fix #673 --- packages/babel-minify/src/cli.js | 3 +++ packages/babel-minify/src/fs.js | 25 ++++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/packages/babel-minify/src/cli.js b/packages/babel-minify/src/cli.js index 275daa3f9..0e6c3bad9 100644 --- a/packages/babel-minify/src/cli.js +++ b/packages/babel-minify/src/cli.js @@ -127,6 +127,9 @@ function log(msg, exitCode = 0) { } function error(err) { + if (err.file) { + process.stderr.write("Error minifying file: " + err.file + "\n"); + } process.stderr.write(err + "\n"); process.exit(1); } diff --git a/packages/babel-minify/src/fs.js b/packages/babel-minify/src/fs.js index 7fc4e0c99..97a70bbf0 100644 --- a/packages/babel-minify/src/fs.js +++ b/packages/babel-minify/src/fs.js @@ -11,13 +11,20 @@ const readFileAsync = promisify(fs.readFile); const writeFileAsync = promisify(fs.writeFile); const lstat = promisify(fs.lstat); +class MinifyFileError extends Error { + constructor(message, { file }) { + super(message); + this.file = file; + } +} + // set defaults const readFile = file => readFileAsync(file, { encoding: "utf-8" }); const writeFile = (file, data) => writeFileAsync(file, data, { encoding: "utf-8" }); function isJsFile(file) { - return EXTENSIONS.some(ext => path.basename(file, ext) !== file); + return EXTENSIONS.some(ext => path.extname(file) === ext); } async function isDir(p) { @@ -79,9 +86,9 @@ async function handleFiles(files, outputDir, options) { return Promise.all( files.map(file => { const outputFilename = path.join(outputDir, path.basename(file)); - return mkdirp(path.dirname(outputFilename)).then(() => - handleFile(file, outputFilename, options) - ); + return mkdirp(path.dirname(outputFilename)) + .then(() => handleFile(file, outputFilename, options)) + .catch(e => Promise.reject(new MinifyFileError(e.message, { file }))); }) ); } @@ -99,9 +106,13 @@ async function handleDir(dir, outputDir, options) { const outputFilename = path.join(outputDir, file); const inputFilename = path.join(dir, file); - return mkdirp(path.dirname(outputFilename)).then(() => - handleFile(inputFilename, outputFilename, options) - ); + return mkdirp(path.dirname(outputFilename)) + .then(() => handleFile(inputFilename, outputFilename, options)) + .catch(e => + Promise.reject( + new MinifyFileError(e.message, { file: inputFilename }) + ) + ); }) ); }