From f8b472605243264f8345c5b678b516409fc4a00b Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Sun, 18 Sep 2016 01:26:59 +0300
Subject: [PATCH] Add missing file check to npm run build too

---
 scripts/build.js                    |  3 +++
 scripts/eject.js                    |  1 +
 scripts/start.js                    | 16 +-------------
 scripts/utils/checkRequiredFiles.js | 33 +++++++++++++++++++++++++++++
 4 files changed, 38 insertions(+), 15 deletions(-)
 create mode 100644 scripts/utils/checkRequiredFiles.js

diff --git a/scripts/build.js b/scripts/build.js
index e60b55446..71dcc798b 100644
--- a/scripts/build.js
+++ b/scripts/build.js
@@ -21,9 +21,12 @@ var rimrafSync = require('rimraf').sync;
 var webpack = require('webpack');
 var config = require('../config/webpack.config.prod');
 var paths = require('../config/paths');
+var checkRequiredFiles = require('./utils/checkRequiredFiles');
 var recursive = require('recursive-readdir');
 var stripAnsi = require('strip-ansi');
 
+checkRequiredFiles();
+
 // Input: /User/dan/app/build/static/js/main.82be8.js
 // Output: /static/js/main.js
 function removeFileNameHash(fileName) {
diff --git a/scripts/eject.js b/scripts/eject.js
index 3e5e18af3..74c5c9ef9 100644
--- a/scripts/eject.js
+++ b/scripts/eject.js
@@ -44,6 +44,7 @@ prompt(
     path.join('config', 'jest', 'transform.js'),
     path.join('scripts', 'build.js'),
     path.join('scripts', 'start.js'),
+    path.join('scripts', 'utils', 'checkRequiredFiles.js'),
     path.join('scripts', 'utils', 'chrome.applescript'),
     path.join('scripts', 'utils', 'prompt.js'),
     path.join('scripts', 'utils', 'WatchMissingNodeModulesPlugin.js')
diff --git a/scripts/start.js b/scripts/start.js
index 185299052..84d1e7c4b 100644
--- a/scripts/start.js
+++ b/scripts/start.js
@@ -11,7 +11,6 @@
 
 process.env.NODE_ENV = 'development';
 
-var fs = require('fs');
 var path = require('path');
 var chalk = require('chalk');
 var webpack = require('webpack');
@@ -21,6 +20,7 @@ var httpProxyMiddleware = require('http-proxy-middleware');
 var execSync = require('child_process').execSync;
 var opn = require('opn');
 var detect = require('detect-port');
+var checkRequiredFiles = require('./utils/checkRequiredFiles');
 var prompt = require('./utils/prompt');
 var config = require('../config/webpack.config.dev');
 var paths = require('../config/paths');
@@ -171,20 +171,6 @@ function openBrowser(port, protocol) {
   opn(protocol + '://localhost:' + port + '/');
 }
 
-function checkRequiredFiles() {
-  var filesPathToCheck = [paths.appHtml, paths.appIndexJs];
-  filesPathToCheck.forEach(function(filePath) {
-    try {
-      fs.accessSync(filePath, fs.F_OK);
-    } catch (err) {
-      var fileName = path.basename(filePath);
-      console.log(
-        chalk.red(`Cannot find ${fileName} in ${filePath} directory`)
-      );
-      process.exit(1);
-    }
-  });
-}
 // We need to provide a custom onError function for httpProxyMiddleware.
 // It allows us to log custom error messages on the console.
 function onProxyError(proxy) {
diff --git a/scripts/utils/checkRequiredFiles.js b/scripts/utils/checkRequiredFiles.js
new file mode 100644
index 000000000..8110eb01c
--- /dev/null
+++ b/scripts/utils/checkRequiredFiles.js
@@ -0,0 +1,33 @@
+// @remove-on-eject-begin
+/**
+ * Copyright (c) 2015-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+// @remove-on-eject-end
+
+const fs = require('fs');
+const path = require('path');
+const chalk = require('chalk');
+const paths = require('../../config/paths');
+
+function checkRequiredFiles() {
+  const filesPathToCheck = [paths.appHtml, paths.appIndexJs];
+  filesPathToCheck.forEach(filePath => {
+    try {
+      fs.accessSync(filePath, fs.F_OK);
+    } catch (err) {
+      const dirName = path.dirname(filePath);
+      const fileName = path.basename(filePath);
+      console.log(chalk.red('Could not find a required file.'));
+      console.log(chalk.red('  Name: ') + chalk.cyan(fileName));
+      console.log(chalk.red('  Searched in: ') + chalk.cyan(dirName));
+      process.exit(1);
+    }
+  });
+}
+
+module.exports = checkRequiredFiles;
-- 
GitLab