From efb9b3967e2a6b575f0d4e3f0fed3d1937439005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kevin=20M=C3=A5rtensson?= Date: Sun, 15 May 2016 18:58:25 +0200 Subject: [PATCH] Improve CLI output by adding number of minified files and spinner (#7) Fixes imagemin/imagemin#158. --- cli.js | 27 ++++++++++++++++++++++----- package.json | 2 ++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/cli.js b/cli.js index 848ced5..c60f0d5 100755 --- a/cli.js +++ b/cli.js @@ -4,6 +4,8 @@ const arrify = require('arrify'); const meow = require('meow'); const getStdin = require('get-stdin'); const imagemin = require('imagemin'); +const ora = require('ora'); +const plur = require('plur'); const stripIndent = require('strip-indent'); const cli = meow(` @@ -61,17 +63,32 @@ const run = (input, opts) => { opts = Object.assign({plugin: DEFAULT_PLUGINS}, opts); const use = requirePlugins(arrify(opts.plugin)); + const spinner = ora('Minifying images'); if (Buffer.isBuffer(input)) { imagemin.buffer(input, {use}).then(buf => process.stdout.write(buf)); return; } - imagemin(input, opts.outDir, {use}).then(files => { - if (!opts.outDir) { - files.forEach(x => process.stdout.write(x.data)); - } - }); + if (opts.outDir) { + spinner.start(); + } + + imagemin(input, opts.outDir, {use}) + .then(files => { + if (!opts.outDir) { + files.forEach(x => process.stdout.write(x.data)); + return; + } + + spinner.stop(); + + console.log(`${files.length} ${plur('image', files.length)} minified`); + }) + .catch(err => { + spinner.stop(); + throw err; + }); }; if (!cli.input.length && process.stdin.isTTY) { diff --git a/package.json b/package.json index f6926e2..ba261c5 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,8 @@ "get-stdin": "^5.0.1", "imagemin": "^5.0.0", "meow": "^3.6.0", + "ora": "^0.2.1", + "plur": "^2.1.2", "strip-indent": "^2.0.0" }, "devDependencies": {