86 lines
2.2 KiB
TypeScript
86 lines
2.2 KiB
TypeScript
/**
|
||
* @author Taoya
|
||
* @date 2022/5/23
|
||
* @Description: 构建开发环境包
|
||
*/
|
||
import * as fs from 'fs';
|
||
import { resolve } from 'path';
|
||
import { exec, ChildProcess } from 'child_process';
|
||
import chalk from 'chalk';
|
||
import logger from 'consola'
|
||
|
||
interface BuildResult {
|
||
success: boolean;
|
||
message: string;
|
||
}
|
||
|
||
async function buildAndroid(): Promise<BuildResult> {
|
||
return new Promise((resolve) => {
|
||
const buildProcess = exec('npx cordova run android', (error, stdout, stderr) => {
|
||
if (error) {
|
||
resolve({
|
||
success: false,
|
||
message: error.message
|
||
});
|
||
return;
|
||
}
|
||
|
||
if (stdout.includes('BUILD SUCCESSFUL')) {
|
||
resolve({
|
||
success: true,
|
||
message: 'BUILD SUCCESSFUL'
|
||
});
|
||
} else {
|
||
resolve({
|
||
success: false,
|
||
message: stderr || '构建失败'
|
||
});
|
||
}
|
||
});
|
||
|
||
// 输出构建日志
|
||
buildProcess.stdout?.on('data', (data: string) => {
|
||
console.log(chalk.green(data));
|
||
});
|
||
});
|
||
}
|
||
|
||
async function main(): Promise<void> {
|
||
try {
|
||
const packageName: string = 'dev.apk';
|
||
const distPath: string = './dist';
|
||
const outputPath: string = './platforms/android/app/build/outputs/apk/debug/app-debug.apk';
|
||
|
||
// 检查dist目录是否存在,不存在则创建
|
||
if (!fs.existsSync(distPath)) {
|
||
fs.mkdirSync(distPath, { recursive: true });
|
||
}
|
||
|
||
// 构建android应用
|
||
const buildResult = await buildAndroid();
|
||
|
||
if (buildResult.success) {
|
||
logger.log('info', '构建成功');
|
||
|
||
// 如果目标文件已存在则删除
|
||
if (fs.existsSync(`${distPath}/${packageName}`)) {
|
||
fs.unlinkSync(`${distPath}/${packageName}`);
|
||
}
|
||
|
||
// 移动构建产物
|
||
fs.renameSync(outputPath, `${distPath}/${packageName}`);
|
||
} else {
|
||
logger.log('error', `构建失败: ${buildResult.message}`);
|
||
process.exit(1);
|
||
}
|
||
} catch (error) {
|
||
logger.log('error', `执行失败: ${error instanceof Error ? error.message : '未知错误'}`);
|
||
process.exit(1);
|
||
}
|
||
}
|
||
|
||
// 执行主函数
|
||
main().catch(error => {
|
||
logger.log('error', `意外错误: ${error instanceof Error ? error.message : '未知错误'}`);
|
||
process.exit(1);
|
||
}); |