express-cli/server.es.js

106 lines
2.5 KiB
JavaScript
Executable File

#!/usr/bin/env esm
import 'tagol'
import 'colors'
//import minimist from 'minimist'
import express from 'express'
global.express = express
import morgan from 'morgan'
import serveCors from './serve-cors'
//import sstatic from 'serve-static'
import serveIndex from 'serve-index'
import { resolve } from 'path'
export default async function({
0: folder = '.'
, h, help = h
, p, port = p || 80
, s, statik = s
, i, index = statik && ( i || true )
, c, cors = c
, r, routes = r
, v, verbose = v
})
{
log.verbose = (ss,...pp)=> verbose && log( ss,...pp )
var args = {
help
, port
, statik
, index
, cors
, routes
, folder
}
/*
console.log(args)
return;
//*/
help && log `Usage: express [options] path
Options:
-h, --help Show this help
-p, --port Set the port to listen (default: 80)
-s, --static=[folder] Serve static content. If true the folder used
is '.' otherwise the given folder is used.
-i, --index Generate index when a folder is requested
-c, --cors
-r, --routes=[path] Loads an express router module
-v, --verbose Show additional informations
`
help && process.exit()
process.cwd( folder )
log.verbose `${args}o
__dirname = ${__dirname}s
process.cwd() = ${process.cwd()}s
resolve(process.cwd(),folder) = ${resolve(process.cwd(),folder)}s
`
const resolved = {
static: resolve( folder, typeof statik == 'undefined' || statik === true ? '.' : statik ),
routes: resolve( folder, typeof routes == 'undefined' || routes === true ? 'routes.js' : routes ),
},
app = express()
//app.engine('html', ejs.renderFile);
//app.set('views', __dirname + '/views');
//app.use( bodyParser )
//app.use(express.cookieParser());
//app.use(express.methodOverride());
app.use( morgan('combined') )
//app.use(express.session({ secret: 'c0ns0l3F0r3v3r' }));
//app.use(passport.initialize());
//app.use(passport.session());
//app.use( app.router )
cors && app.use( serveCors )
cors && log `using ${'CORS'.cyan}s`
statik && app.use( express.static(resolved.static), index && serveIndex(resolved.static, {'icons': true, view: 'details'}) )
statik && log `Started static web server:
${resolved.static.cyan}s`
index && log `generating ${'index'.cyan}s pages from folders`
//console.log( (await import(resolved.routes)).default )
routes && app.use( '/', (await import(resolved.routes)).default )
routes && log `Routes file loaded: ${resolved.routes.cyan}s`
app.listen( port )
log `Server listening on Port: ${(''+port).yellow}s`
}