Last active
December 7, 2016 15:28
-
-
Save michelc/d0e6e7991cb1a8f8714ca9278619aae9 to your computer and use it in GitHub Desktop.
Node.JS static file web server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Node.JS static file web server | |
// ------------------------------ | |
// Created from https://gist.github.com/ryanflorence/701407 | |
var http = require("http") | |
, url = require("url") | |
, path = require("path") | |
, fs = require("fs") | |
, port = process.argv[2] || 8888; | |
http.createServer(function(request, response) { | |
var uri = url.parse(request.url).pathname | |
, filename = path.join(process.cwd(), uri); | |
if (!fs.existsSync(filename)) | |
filename += '.html'; | |
fs.exists(filename, function(exists) { | |
if (!exists) { | |
response.writeHead(404, { "Content-Type": "text/plain" }); | |
response.write("404 Not Found\n"); | |
response.end(); | |
return; | |
} | |
if (fs.statSync(filename).isDirectory()) | |
filename += '/index.html'; | |
fs.readFile(filename, "binary", function(err, file) { | |
if (err) { | |
response.writeHead(500, { "Content-Type": "text/plain" }); | |
response.write(err + "\n"); | |
response.end(); | |
return; | |
} | |
var mimes = { | |
css: "text/css", | |
gif: "image/gif", | |
html: "text/html", | |
ico: "image/x-ico", | |
jpg: "image/jpeg", | |
js: "application/javascript", | |
pdf: "application/pdf", | |
png: "image/png", | |
txt: "text/plain", | |
xml: "application/xml" | |
} | |
, extension = filename.replace(/.*[\.\/\\]/, '').toLowerCase() | |
, mime = mimes[extension]; | |
console.log("- " + filename + " (" + mime + ")"); | |
if (typeof mime === "undefined") | |
response.writeHead(200); | |
else | |
response.writeHead(200, { "Content-Type": mime }); | |
response.write(file, "binary"); | |
response.end(); | |
}); | |
}); | |
}).listen(parseInt(port, 10)); | |
console.log("Static file server running at\n => http://localhost:" + port + "/\nCTRL + C to shutdown"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment