From 7bad58022c8fe1c1ac33f78a9ecfec3a33e00131 Mon Sep 17 00:00:00 2001 From: Joel Marcey Date: Mon, 23 Oct 2017 18:27:21 -0700 Subject: [PATCH] Check if a port is in use Test: Ran a separate server on port 3000 ``` Checking if port 3000 is free... Extracting translateable strings from files... Loading translation files... Generating Metadata for Docs.... Generating Metadata for Docs.... server.js triggered... Generating Metadata for Docs.... Extracting translateable strings from files... listening on port: 3000 Open http://localhost:3000/ Port 3000 is in use ``` Fixes #124 --- lib/start-server.js | 30 ++++++++++++++++++++++-------- package.json | 3 ++- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/lib/start-server.js b/lib/start-server.js index de8d79d9ec..4e089833eb 100755 --- a/lib/start-server.js +++ b/lib/start-server.js @@ -8,22 +8,25 @@ */ require("babel-register")({ - babelrc: false, - only: [__dirname, process.cwd() + "/core"], - plugins: [require("./server/translate-plugin.js")], - presets: ["react", "env"] + babelrc: false, + only: [__dirname, process.cwd() + "/core"], + plugins: [require("./server/translate-plugin.js")], + presets: ["react", "env"] }); +// For verifying port usage +const tcpPortUsed = require('tcp-port-used'); + // initial check that required files are present const chalk = require("chalk"); const fs = require("fs"); const CWD = process.cwd(); if (!fs.existsSync(CWD + "/siteConfig.js")) { - console.error( - chalk.red("Error: No siteConfig.js file found in website folder!") - ); - process.exit(1); + console.error( + chalk.red("Error: No siteConfig.js file found in website folder!") + ); + process.exit(1); } const program = require("commander"); @@ -32,6 +35,17 @@ program.option("--port ", "Specify port number").parse(process.argv); const port = program.port || 3000; +console.log("Checking if port " + port + " is free..."); +tcpPortUsed.check(port, "localhost") +.then(function(inUse) { + if (inUse) { + console.error( + chalk.red("Port " + port + " is in use") + ); + process.exit(1); + } +}); + // start local server on specified port const server = require("./server/server.js"); server(port); diff --git a/package.json b/package.json index cdf8d95d14..522f072e13 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "react-dom-factories": "^1.0.1", "request": "^2.81.0", "shelljs": "^0.7.8", - "sitemap": "^1.13.0" + "sitemap": "^1.13.0", + "tcp-port-used": "^0.1.2" }, "name": "docusaurus", "version": "1.0.0-beta.5",