#!/usr/bin/env node 'use strict' const path = require('path') const program = require('commander') const base = require('../package.json') const IP = require('../lib/util/IP') const HOSTS = require('../lib/util/HOSTS') const fs = require('fs') const { getConfig, setConfig } = require('../lib/conf/F2E_CONFIG') const F2E_CONFIG = getConfig() program .version(base.version) program .command('conf') .description(`生成 ${F2E_CONFIG} 配置文件模板`) .action(options => { fs.readFile(path.join(__dirname, '../', F2E_CONFIG), function (err, data) { !err && fs.writeFile(path.resolve(F2E_CONFIG), data.toString().replace(`import('./index')`, `import('f2e-server')`), function (err) { err && console.log(err) }) }) }) program .command('build') .option('-w, --watch ', 'build with watching-update') .option('-c, --config ', `config file. default to ${F2E_CONFIG}`) .option('-t, --timeout ', 'build-in with timeout(1000ms) after build-out') .description('编译输出') .action(({ watch, timeout, config }) => { timeout = (timeout | 0) || 1000 let beginTime = Date.now() + timeout console.log('build begin...') setConfig(config) require('../lib/util/build')(function () { console.log('build finished' + (watch ? '!\n & building...' : ' with: ' + (Date.now() - beginTime) + 'ms' )) }, {watch, timeout}) }) program .command('start') .option('-p, --port ', 'http server port') .option('-c, --config ', `config file. default to ${F2E_CONFIG}`) .option('-H, --host ', 'port 80 & set local host') .option('-B, --build ', 'build with true') .description('启动服务器') .action(options => { if (options.config) { setConfig(options.config) } require('../index')(options) }) program .command('ip') .description('获取本地IP') .action(options => console.log(IP)) program .command('host') .description('加入host映射') .action(options => { HOSTS(options) }) program .command('create') .description('创建单页App') .action(appname => { console.log(` 1. 下载 https://github.com/f2e-server/app/archive/master.zip 2. 解压后进入目录 3. npm i 4. npm start `) }) // 开始解析用户输入的命令 program.parse(process.argv)