From b8da58499a8dd2e91feab117dedf127f0d9d59e4 Mon Sep 17 00:00:00 2001
From: Joe Haddad <timer150@gmail.com>
Date: Sat, 22 Sep 2018 13:44:58 -0400
Subject: [PATCH] Optimize webpack rebuild speed (#5065)

Derived from https://github.com/facebook/create-react-app/issues/4492#issuecomment-421959548
---
 packages/react-dev-utils/FileSizeReporter.js      | 2 +-
 packages/react-dev-utils/WebpackDevServerUtils.js | 6 +++++-
 packages/react-scripts/scripts/build.js           | 4 +++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/packages/react-dev-utils/FileSizeReporter.js b/packages/react-dev-utils/FileSizeReporter.js
index e33eedda6..221005fd8 100644
--- a/packages/react-dev-utils/FileSizeReporter.js
+++ b/packages/react-dev-utils/FileSizeReporter.js
@@ -28,7 +28,7 @@ function printFileSizesAfterBuild(
   var assets = (webpackStats.stats || [webpackStats])
     .map(stats =>
       stats
-        .toJson()
+        .toJson({ all: false, assets: true })
         .assets.filter(asset => /\.(js|css)$/.test(asset.name))
         .map(asset => {
           var fileContents = fs.readFileSync(path.join(root, asset.name));
diff --git a/packages/react-dev-utils/WebpackDevServerUtils.js b/packages/react-dev-utils/WebpackDevServerUtils.js
index bc0378459..f83c722a0 100644
--- a/packages/react-dev-utils/WebpackDevServerUtils.js
+++ b/packages/react-dev-utils/WebpackDevServerUtils.js
@@ -150,7 +150,11 @@ function createCompiler(webpack, config, appName, urls, useYarn) {
     // We have switched off the default Webpack output in WebpackDevServer
     // options so we are going to "massage" the warnings and errors and present
     // them in a readable focused way.
-    const messages = formatWebpackMessages(stats.toJson({}, true));
+    // We only construct the warnings and errors for speed:
+    // https://github.com/facebook/create-react-app/issues/4492#issuecomment-421959548
+    const messages = formatWebpackMessages(
+      stats.toJson({ all: false, warnings: true, errors: true })
+    );
     const isSuccessful = !messages.errors.length && !messages.warnings.length;
     if (isSuccessful) {
       console.log(chalk.green('Compiled successfully!'));
diff --git a/packages/react-scripts/scripts/build.js b/packages/react-scripts/scripts/build.js
index bc0f81b1d..6f2cdb40d 100644
--- a/packages/react-scripts/scripts/build.js
+++ b/packages/react-scripts/scripts/build.js
@@ -142,7 +142,9 @@ function build(previousFileSizes) {
       if (err) {
         return reject(err);
       }
-      const messages = formatWebpackMessages(stats.toJson({}, true));
+      const messages = formatWebpackMessages(
+        stats.toJson({ all: false, warnings: true, errors: true })
+      );
       if (messages.errors.length) {
         // Only keep the first error. Others are often indicative
         // of the same problem, but confuse the reader with noise.
-- 
GitLab