From 6b6d7ee30351d5e4dd7fb4d7157f6bf0011b0125 Mon Sep 17 00:00:00 2001
From: Elijah Manor <elijah.manor@gmail.com>
Date: Thu, 4 Aug 2016 00:57:01 -0500
Subject: [PATCH] Adjust colors and account for unicode when padding

---
 package.json     |  1 +
 scripts/build.js | 24 +++++++++++++++---------
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/package.json b/package.json
index e80008d84..0dbaf6a60 100644
--- a/package.json
+++ b/package.json
@@ -68,6 +68,7 @@
     "promise": "7.1.1",
     "recursive-readdir": "^2.0.0",
     "rimraf": "2.5.4",
+    "strip-ansi": "^3.0.1",
     "style-loader": "0.13.1",
     "url-loader": "0.5.7",
     "webpack": "1.13.1",
diff --git a/scripts/build.js b/scripts/build.js
index 11421deaa..be1f40e4a 100644
--- a/scripts/build.js
+++ b/scripts/build.js
@@ -19,6 +19,7 @@ var webpack = require('webpack');
 var config = require('../config/webpack.config.prod');
 var paths = require('../config/paths');
 var recursive = require('recursive-readdir');
+var stripAnsi = require('strip-ansi');
 
 function removeFileNameHash(fileName) {
   return fileName.replace(paths.appBuild, '')
@@ -28,13 +29,17 @@ function removeFileNameHash(fileName) {
 }
 
 function sizeDifference(currentSize, previousSize) {
-  if (previousSize === undefined) { return ''; }
+  var FIFTY_KILOBYTES = 1024 * 50;
   var difference = currentSize - previousSize;
-  var fileSize = filesize(difference);
-  if (difference > 0) {
+  var fileSize = !Number.isNaN(difference) ? filesize(difference) : 0;
+  if (difference >= FIFTY_KILOBYTES) {
     return chalk.red('+' + fileSize);
-  } else if (difference <= 0){
-    return chalk.green((difference === 0 ? '+' : '') + fileSize);
+  } else if (difference < FIFTY_KILOBYTES && difference > 0) {
+    return chalk.yellow('+' + fileSize);
+  } else if (difference < 0) {
+    return chalk.green(fileSize);
+  } else {
+    return '';
   }
 }
 
@@ -86,16 +91,17 @@ function build(previousSizeMap) {
     assets.sort((a, b) => b.size - a.size);
 
     var longestSizeLabelLength = Math.max.apply(null,
-      assets.map(a => a.sizeLabel.length)
+      assets.map(a => stripAnsi(a.sizeLabel).length)
     );
     assets.forEach(asset => {
       var sizeLabel = asset.sizeLabel;
-      if (sizeLabel.length < longestSizeLabelLength) {
-        var rightPadding = ' '.repeat(longestSizeLabelLength - sizeLabel.length);
+	  var sizeLength = stripAnsi(sizeLabel).length;
+      if (sizeLength < longestSizeLabelLength) {
+        var rightPadding = ' '.repeat(longestSizeLabelLength - sizeLength);
         sizeLabel += rightPadding;
       }
       console.log(
-        '  ' + chalk.yellow(sizeLabel) +
+        '  ' + sizeLabel +
         '  ' + chalk.dim(asset.folder + path.sep) + chalk.cyan(asset.name)
       );
     });
-- 
GitLab