#!/usr/bin/env node const path = require('path') const fs = require('fs-extra') const program = require('commander') const chalk = require('chalk') const build = require('../dist/build').default const { targetReset } = require('../dist/build/target') const { PROJECT_CONFIG } = require('../dist/util/constants') const { log } = require('../dist/util/log') const appPath = process.cwd() const projectConfPath = path.join(appPath, PROJECT_CONFIG) program .option('--type [typeName]', '运行编译类型,device:真机 simulator:模拟器') .option('--debug', 'debug模式运行,支持热更新') .option('--target [targetName]', '重置target,device:真机 simulator:模拟器') .option('--env [env]', 'Env type') .option('--port [port]', '使用指定端口启动热更新服务') .option('--onlybuild', '构建完成后不安装sop') .option('--nodoctor', '构建时不执行环境检查') .option('--s1', '构建S1手机可用的应用') .parse(process.argv) const { type, debug, nodoctor, onlybuild, s1 } = program let { port, env } = program log.verbose('debug:', debug) log.verbose('env:', env) log.verbose('type:', type) port = parseInt(port, 10) log.verbose('port:', typeof port, port) if (isNaN(port)) { port = undefined } env = process.env.NODE_ENV || env // 是否只打包 const onlyBuild = !!onlybuild if (!fs.existsSync(projectConfPath)) { console.log( chalk.red( `找不到项目配置文件${PROJECT_CONFIG},请确定当前目录是SyberOS-Hybrid项目根目录!` ) ) process.exit(1) } // 检查是否需要重置target targetReset(appPath, program).then(() => { if (env) { process.env.NODE_ENV = env } else { if (debug) { process.env.NODE_ENV = 'development' } else { process.env.NODE_ENV = 'production' } } process.env.SYBEROS_ENV = type const projectConf = require(projectConfPath) console.log(chalk.green(`开始编译项目 ${chalk.bold(projectConf.projectName)}`)) const webPath = projectConf.webPath build(appPath, webPath, { type, debug, port, nodoctor, onlyBuild, s1 }) })