wip
This commit is contained in:
parent
a3a845917c
commit
45dd036ab8
|
@ -0,0 +1,22 @@
|
||||||
|
#! /usr/bin/env node
|
||||||
|
|
||||||
|
const flags = require('minimist')( process.argv.slice(2) )
|
||||||
|
const params = flags._
|
||||||
|
delete flags._
|
||||||
|
const moduleStr = params.shift()
|
||||||
|
const [ esmodule, exported ] = (moduleStr || '').split(':')
|
||||||
|
const isCli = process.cwd() == __dirname
|
||||||
|
|
||||||
|
flags.verbose || flags.v && console.log( params, flags, esmodule || require('./package.json').module, exported, __dirname, isCli )
|
||||||
|
|
||||||
|
module.exports =
|
||||||
|
require('esm')( module, { await: true } )
|
||||||
|
( `./${isCli && esmodule ? esmodule : require('./package.json').module}` )
|
||||||
|
|
||||||
|
let toCall = module.exports[ exported || 'default' ]
|
||||||
|
let returned = typeof toCall == 'function' ? toCall( flags, ...params ) : toCall
|
||||||
|
returned instanceof Promise
|
||||||
|
? returned.then( ret=> console.log(ret), e=>console.error(e) )
|
||||||
|
: console.log( returned )
|
||||||
|
|
||||||
|
// module.exports = mod
|
|
@ -0,0 +1,38 @@
|
||||||
|
var args = require('minimist')( process.argv.slice(2) ),
|
||||||
|
express = require('express'),
|
||||||
|
morgan = require('morgan'),
|
||||||
|
// bodyParser = require('body-parser'),
|
||||||
|
static = require('serve-static'),
|
||||||
|
index = require('serve-index'),
|
||||||
|
port = args.p || args.port || 80,
|
||||||
|
app = express()
|
||||||
|
|
||||||
|
console.log( args )
|
||||||
|
|
||||||
|
//CORS middleware
|
||||||
|
var allowCrossDomain = function(req, res, next) {
|
||||||
|
res.header('Access-Control-Allow-Origin', '*');
|
||||||
|
res.header('Access-Control-Allow-Methods', 'GET');
|
||||||
|
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
|
||||||
|
app.use( allowCrossDomain )
|
||||||
|
//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 )
|
||||||
|
app.use( static(__dirname + '/' + args._[0]), index(__dirname + '/' + args._[0], {'icons': true}) )
|
||||||
|
|
||||||
|
|
||||||
|
app.listen( port );
|
||||||
|
|
||||||
|
console.log( "Started static web server: " + args._[0] )
|
||||||
|
console.log( "Server listening on Port: "+port )
|
|
@ -0,0 +1,51 @@
|
||||||
|
{
|
||||||
|
"name": "express-cli",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"description": "Command line tool to launch express servers with ease",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"express": "./server.js"
|
||||||
|
},
|
||||||
|
"preferGlobal": true,
|
||||||
|
"main": "esm",
|
||||||
|
"module": "server",
|
||||||
|
"dependencies": {
|
||||||
|
"body-parser": "^1.18.2",
|
||||||
|
"colors": "^1.2.3",
|
||||||
|
"esm": "^3.0.84",
|
||||||
|
"express": "^4.16.3",
|
||||||
|
"minimist": "^1.2.0",
|
||||||
|
"morgan": "^1.9.1",
|
||||||
|
"serve-index": "^1.9.1",
|
||||||
|
"serve-static": "^1.13.2",
|
||||||
|
"tagol": "^1.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {},
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"start-es": "esm server",
|
||||||
|
"start": "node server.js"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://git.p2p.legal/dig/esm-cli/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://git.p2p.legal/dig/express-cli",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://git.p2p.legal/dig/express-cli.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"express",
|
||||||
|
"server",
|
||||||
|
"http",
|
||||||
|
"cli",
|
||||||
|
"commandline"
|
||||||
|
],
|
||||||
|
"author": {
|
||||||
|
"name": "Thomas Di Grégorio",
|
||||||
|
"email": "dig@p2p.legal"
|
||||||
|
},
|
||||||
|
"license": "GPL-3.0"
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
//CORS middleware
|
||||||
|
export default (req, res, next)=> {
|
||||||
|
res.header('Access-Control-Allow-Origin', '*')
|
||||||
|
res.header('Access-Control-Allow-Methods', 'GET')
|
||||||
|
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
|
||||||
|
next()
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
var args = require('minimist')( process.argv.slice(2) ),
|
||||||
|
http = require('http'),
|
||||||
|
express = require('express'),
|
||||||
|
port = args.p || args.port || 80,
|
||||||
|
app = express();
|
||||||
|
|
||||||
|
console.log( args );
|
||||||
|
|
||||||
|
//CORS middleware
|
||||||
|
var allowCrossDomain = function(req, res, next) {
|
||||||
|
res.header('Access-Control-Allow-Origin', '*');
|
||||||
|
res.header('Access-Control-Allow-Methods', 'GET');
|
||||||
|
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
|
||||||
|
app.use( allowCrossDomain );
|
||||||
|
//app.engine('html', ejs.renderFile);
|
||||||
|
//app.set('views', __dirname + '/views');
|
||||||
|
//app.use(express.static(__dirname + '/devingfx.com'));
|
||||||
|
|
||||||
|
//express.logger.format('customLog', utils.customLog);
|
||||||
|
//app.use( allowCrossDomain );
|
||||||
|
app.use(express.bodyParser());
|
||||||
|
app.use(express.cookieParser());
|
||||||
|
app.use(express.methodOverride());
|
||||||
|
app.use(express.logger());
|
||||||
|
app.use(express.session({ secret: 'c0ns0l3F0r3v3r' }));
|
||||||
|
//app.use( allowCrossDomain );
|
||||||
|
//app.use(passport.initialize());
|
||||||
|
//app.use(passport.session());
|
||||||
|
app.use(app.router);
|
||||||
|
app.use( express.static(__dirname + '/' + args._[0]) );
|
||||||
|
|
||||||
|
//app.options('portfolio.json', allowCrossDomain );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
app.configure("development", function() {
|
||||||
|
app.use(express.errorHandler({
|
||||||
|
dumpExceptions: true,
|
||||||
|
showStack: true
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
app.configure("production", function() {
|
||||||
|
app.use(express.errorHandler());
|
||||||
|
});
|
||||||
|
|
||||||
|
app.listen( port );
|
||||||
|
|
||||||
|
console.log( "Started static web server: " + args._[0] );
|
||||||
|
console.log( "Server listening on Port: "+port );
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,105 @@
|
||||||
|
#!/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`
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
import 'log'
|
||||||
|
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'
|
||||||
|
|
||||||
|
const args = minimist( process.argv.slice(2) ),
|
||||||
|
help = args.help || args.h,
|
||||||
|
port = args.port || args.p || 80,
|
||||||
|
statik = args.static || args.s,
|
||||||
|
index = statik && ( args.index || args.i || true ),
|
||||||
|
cors = args.cors || args.c,
|
||||||
|
routes = args.routes || args.r,
|
||||||
|
folder = args._[0] || ''
|
||||||
|
|
||||||
|
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
|
||||||
|
`
|
||||||
|
help && process.exit()
|
||||||
|
|
||||||
|
process.cwd( folder )
|
||||||
|
|
||||||
|
console.log( args, __dirname, process.cwd(), resolve(process.cwd(),folder) )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const resolved = {
|
||||||
|
static: resolve( folder, typeof statik == 'boolean' ? '.' : statik ),
|
||||||
|
routes: resolve( folder, typeof routes == 'boolean' ? 'routes.js' : routes ),
|
||||||
|
},
|
||||||
|
app = express()
|
||||||
|
|
||||||
|
cors && app.use( serveCors )
|
||||||
|
//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 )
|
||||||
|
|
||||||
|
//console.log( (await import(resolved.routes)).default )
|
||||||
|
routes && app.use( '/', (await import(resolved.routes)).default )
|
||||||
|
|
||||||
|
statik && app.use( express.static(resolved.static), index && serveIndex(resolved.static, {'icons': true, view: 'details'}) )
|
||||||
|
|
||||||
|
app.listen( port )
|
||||||
|
|
||||||
|
statik && log `Started static web server: ${resolved.static.cyan}s`
|
||||||
|
routes && log `Routes file loaded: ${resolved.routes.cyan}s`
|
||||||
|
log `Server listening on Port: ${(''+port).yellow}s`
|
Loading…
Reference in New Issue