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",