UNPKG

2.12 kBPlain TextView Raw
1#!/usr/bin/env node
2const path = require('path')
3const fs = require('fs-extra')
4const program = require('commander')
5const chalk = require('chalk')
6const build = require('../dist/build').default
7const { targetReset } = require('../dist/build/target')
8const { PROJECT_CONFIG } = require('../dist/util/constants')
9const { log } = require('../dist/util/log')
10const appPath = process.cwd()
11const projectConfPath = path.join(appPath, PROJECT_CONFIG)
12
13program
14 .option('--type [typeName]', '运行编译类型,device:真机 simulator:模拟器')
15 .option('--debug', 'debug模式运行,支持热更新')
16 .option('--target [targetName]', '重置target,device:真机 simulator:模拟器')
17 .option('--env [env]', 'Env type')
18 .option('--port [port]', '使用指定端口启动热更新服务')
19 .option('--onlybuild', '构建完成后不安装sop')
20 .option('--nodoctor', '构建时不执行环境检查')
21 .option('--s1', '构建S1手机可用的应用')
22 .parse(process.argv)
23
24const { type, debug, nodoctor, onlybuild, s1 } = program
25let { port, env } = program
26log.verbose('debug:', debug)
27log.verbose('env:', env)
28log.verbose('type:', type)
29port = parseInt(port, 10)
30log.verbose('port:', typeof port, port)
31if (isNaN(port)) {
32 port = undefined
33}
34env = process.env.NODE_ENV || env
35
36// 是否只打包
37const onlyBuild = !!onlybuild
38
39if (!fs.existsSync(projectConfPath)) {
40 console.log(
41 chalk.red(
42 `找不到项目配置文件${PROJECT_CONFIG},请确定当前目录是SyberOS-Hybrid项目根目录!`
43 )
44 )
45 process.exit(1)
46}
47
48// 检查是否需要重置target
49targetReset(appPath, program).then(() => {
50 if (env) {
51 process.env.NODE_ENV = env
52 } else {
53 if (debug) {
54 process.env.NODE_ENV = 'development'
55 } else {
56 process.env.NODE_ENV = 'production'
57 }
58 }
59
60 process.env.SYBEROS_ENV = type
61
62 const projectConf = require(projectConfPath)
63
64 console.log(chalk.green(`开始编译项目 ${chalk.bold(projectConf.projectName)}`))
65
66 const webPath = projectConf.webPath
67
68 build(appPath, webPath, {
69 type,
70 debug,
71 port,
72 nodoctor,
73 onlyBuild,
74 s1
75 })
76})