UNPKG

@honor-minigame/cli

Version:

honor minigame pack cli

91 lines (79 loc) 2.33 kB
import { createZipBufferFromFileList } from "../common/ziputil.js" import { signZipBufferForPackage } from "../sign/index.js" import { createPackagesDefinition, allocateResourceToPackages, createZipBufferForPackage, } from "../subpackages/index.js" /** * 编译项目产出文件 * @param {Package} fullPackage * @param {Package[]} subPackages * @param {object} signConfig * @param {ArrayBuffer} signConfig.privatekey 私钥文件内容 * @param {ArrayBuffer} signConfig.certificate 公钥文件内容 */ async function buildProjectAndOutput(fullPackage, subPackages, signConfig) { // 生成整包rpk let fullPackageBuffer = await createZipBufferForPackage(fullPackage) // 生成子包rpk let subPackageBuffers = await Promise.all( (subPackages || []).map((subPackageItem) => createZipBufferForPackage(subPackageItem) ) ) // 是否需要增加签名逻辑 if (signConfig) { const { privatekey, certificate } = signConfig fullPackageBuffer = await signZipBufferForPackage( fullPackageBuffer, privatekey, certificate ) subPackageBuffers = await Promise.all( subPackageBuffers.map((item) => signZipBufferForPackage(item, privatekey, certificate) ) ) } // 生成rpk:不需要META和签名 let subRpkBuffer = null if (subPackageBuffers.length) { const rpksFileList = [] // // 添加整包 rpksFileList.push({ path: fullPackage.fileName, content: fullPackageBuffer, }) // 添加各个子包 subPackageBuffers.forEach((buffer, index) => { const fileBuildPath = subPackages[index].fileName rpksFileList.push({ path: fileBuildPath, content: buffer, }) }) subRpkBuffer = await createZipBufferFromFileList( rpksFileList, fullPackage.comment ) if (signConfig) { const { privatekey, certificate } = signConfig subRpkBuffer = await signZipBufferForPackage( subRpkBuffer, privatekey, certificate ) } } return { rpkBuffer: fullPackageBuffer, subRpkBuffer, } } export { createPackagesDefinition, allocateResourceToPackages, createZipBufferForPackage, buildProjectAndOutput, }