import path from "path"; import fs from 'fs'; import { Config, SubpackageConfig } from "./Config"; import { ItemHandler } from "./ItemHandler"; import { Utils } from "./Utils"; export default class Handler { private projectDir: string; private codeVersion: string; private mode: string; private config: Config; constructor(projectDir: string, configPath: string, codeVersion: string, mode: string, xxtea?: string) { this.projectDir = projectDir; this.codeVersion = codeVersion; this.mode = mode; this.config = new Config(projectDir, configPath); } public async make(): Promise { let subpackageConfigs: SubpackageConfig[] = this.config.getSubpackageConfig(); let config: { [key: string]: { version: number, des: string, name: string, size: { version: number, size: number }[] } } = {}; let pickFiles: string[] = []; for (let subpackageConfig of subpackageConfigs) { let itemHandler = new ItemHandler(this.projectDir, this.mode, subpackageConfig); let result = await itemHandler.handle(); let itemInfo = result.info; config[subpackageConfig.key] = { version: itemInfo.version, size: itemInfo.size, des: subpackageConfig.des, name: subpackageConfig.name }; pickFiles.push(...result.pickFiles); } while (pickFiles.length) { const file = pickFiles.shift(); if (fs.existsSync(file)) { Utils.log(`Delete ${file}`, Utils.LogLevel.Particular); fs.unlinkSync(file!); } } let configFileName = `subpackage_config_${this.codeVersion}.json`; let configFiltPath = path.join(this.projectDir, 'build', 'subpackage', 'build', configFileName); Utils.mkdir(path.dirname(configFiltPath)); fs.writeFileSync(configFiltPath, JSON.stringify(config)); } }