UNPKG

werkzeug

Version:

compiles ts, coffee, sass/scss, less/ stylus and packs browser ready bundles

59 lines (43 loc) 1.57 kB
Path = require 'path' Express = require 'express' BodyParser = require 'body-parser' Portfinder = require 'portfinder' _ = require 'lodash' FSU = require '../utils/fsu' PH = require '../utils/path-helper' IPC = require '../utils/ipc' Log = require '../utils/log' class Server constructor: () -> @port = NaN @root = null @cfg = null @ipc = new IPC(process, @) init: (@cfg) -> @root = PH.getOut @cfg, 'server' @express = Express() @express.use BodyParser.json() @express.use BodyParser.urlencoded extended:true @express.use '/', Express.static @root # mod rewrite fake @express.get '*', (request, response, next) => path = Path.join @cfg.base, request.path if FSU.isFile path console.log 'server: path not found (serving relative): ', request.path response.sendFile path else console.log 'server: path not found (serving index.html): ', request.path response.sendFile Path.join(@root, '/index.html') Portfinder.basePort = @cfg.server.port Portfinder.getPort (error, port) => if not error @port = port @server = @express.listen port, @listeningHandler null listeningHandler: => @ipc.send 'serverReady', @port null exit: -> @server.close() if @server process.exit 0 module.exports = new Server()