diff --git a/packages/react-dev-utils/package.json b/packages/react-dev-utils/package.json
index b4539788d2653e4a3f0012f1ddee822df6e0c355..e09e990d0b746ddf4ea7448b7bee26ad94c8cccb 100644
--- a/packages/react-dev-utils/package.json
+++ b/packages/react-dev-utils/package.json
@@ -41,6 +41,7 @@
     "detect-port-alt": "1.1.3",
     "escape-string-regexp": "1.0.5",
     "filesize": "3.3.0",
+    "global-modules": "1.0.0",
     "gzip-size": "3.0.0",
     "html-entities": "1.2.1",
     "inquirer": "3.1.1",
diff --git a/packages/react-dev-utils/printHostingInstructions.js b/packages/react-dev-utils/printHostingInstructions.js
index f9882d44a7cb6bf7a951f04d1d9a2a70c3e00607..2ef25767aa231eb1bc03464115ab1c012cdf28f7 100644
--- a/packages/react-dev-utils/printHostingInstructions.js
+++ b/packages/react-dev-utils/printHostingInstructions.js
@@ -11,6 +11,8 @@
 
 const chalk = require('chalk');
 const url = require('url');
+const globalModules = require('global-modules');
+const fs = require('fs');
 
 function printHostingInstructions(
   appPackage,
@@ -121,10 +123,12 @@ function printHostingInstructions(
     );
     console.log('You may serve it with a static server:');
     console.log();
-    if (useYarn) {
-      console.log(`  ${chalk.cyan('yarn')} global add serve`);
-    } else {
-      console.log(`  ${chalk.cyan('npm')} install -g serve`);
+    if (!fs.existsSync(`${globalModules}/serve`)) {
+      if (useYarn) {
+        console.log(`  ${chalk.cyan('yarn')} global add serve`);
+      } else {
+        console.log(`  ${chalk.cyan('npm')} install -g serve`);
+      }
     }
     console.log(`  ${chalk.cyan('serve')} -s ${buildFolder}`);
     console.log();