UNPKG

bm_scaffold_async_router

Version:

本木前端脚手架-异步路由版

106 lines (93 loc) 2.74 kB
/** * @Author: songqi * @Date: 2016-07-12 * @Email: songqi@benmu-health.com * @Last modified by: songqi * @Last modified time: 2016-11-10 */ var fs = require('fs'), _ = require('lodash'), path = require('path'), gulp = require('gulp'), http = require('http'), https = require('https'), connect = require('connect'), argv = require('yargs').argv, mockServer = require('gulp-mock-server'); var print = require('../../utils/print'), duration = require('../../utils/duration'), corsMiddleware = require('../middleware/cors'), proxyMiddleware = require('../middleware/proxy'), readConfig = require('../../utils/readConfig'); var mockConfig = { port: 52077, mockDir: './dist/mock' } if(argv.s || argv.ssl){ mockConfig['https'] = true; } var MOCKHOST = _.assign(mockConfig, readConfig.get('mockServer')); // mock 数据 server gulp.task('mock', function() { gulp.src('.') .pipe(duration('mockServer')) .pipe(mockServer(MOCKHOST)); }); var config = { name: 'mock', explain: '启动一个 mock 服务', command: 'BM mock', options: [{ keys: ['-h', '--help'], describe: '查看帮助' }] } function helpTitle(){ print.title(config); } function helpCommand(){ print.command(config); } function listenPort(server, port){ server.on('error', function(e) { if (e.code === 'EADDRINUSE') { print.info('[ERROR]: 端口 ' + port + ' 已经被占用, 请关闭占用该端口的程序或者使用其它端口.'); } if (e.code === 'EACCES') { print.info('[ERROR]: 权限不足, 请使用sudo执行.'); } return process.exit(1); }); server.on('listening', function(e) { print.log('server 运行成功, 端口为 ' + port); print.log('按 Ctrl + C 结束进程'); gulp.start('mock'); }); return server.listen(port); } function run(){ if (argv.h || argv.help) { helpCommand(); } else { var serverConfig = readConfig.get('server') || {}, ssl = argv.s || argv.ssl, app = connect(); app.use(corsMiddleware) .use(proxyMiddleware()); if(ssl){ var opts = { key: fs.readFileSync(path.resolve(process.cwd(), ssl + ".key")), cert: fs.readFileSync(path.resolve(process.cwd(), ssl + ".crt")) }; listenPort(https.createServer(opts, app), serverConfig.httpsPort || 443); }else{ listenPort(http.createServer(app), serverConfig.port || 80); } } } module.exports = { run: run, config: config, helpTitle: helpTitle, helpCommand: helpCommand }