kulfon
Version:
Kulfon is a modern static site generator written in JavaScript.
46 lines (37 loc) • 1.22 kB
JavaScript
// Copyright Zaiste. All rights reserved.
// Licensed under the Apache License, Version 2.0
const http = require('http');
const url = require('url');
const { join, extname } = require('path');
const fs = require('fs');
const MIMETypes = {
".html": "text/html",
".jpeg": "image/jpeg",
".jpg": "image/jpeg",
".png": "image/png",
".gif": "image/gif",
".js": "text/javascript",
".ico": "image/x-icon",
".svg": "image/svg+xml",
".css": "text/css"
};
const isFileTricky = pathname => !!extname(pathname);
// FIXME make parametrized
const server = http.createServer(async (request, response) => {
const { pathname } = url.parse(request.url);
const file = isFileTricky(pathname) ? pathname : join(pathname, 'index.html');
const data = fs.createReadStream(join('public', file));
const ext = extname(file);
response.writeHead(200, { 'Content-Type': MIMETypes[ext] });
data.pipe(response);
data.on('error', error => {
if (error.code === 'ENOENT') {
response.statusCode = 404;
response.end(`'${pathname}' not found!`);
} else {
response.statusCode = 500;
response.end(`Error for ${pathname} -> ${error.message}.`);
}
})
});
module.exports = { server };