106 lines
2.5 KiB
JavaScript
Executable File
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`
|
|
|
|
|
|
}
|