UNPKG

@honor-minigame/cli

Version:

honor minigame pack cli

100 lines (91 loc) 2.59 kB
/** * 分包所有的类定义 * @param options * @constructor */ class Package { constructor(options) { // 包前缀 this.filePrefix = null // 子包名称;整包没有 this.fileSubname = null // 后缀名 this.fileSuffix = null // icon this.icon = '' // banner(可选) this.banner = '' // 注释 this.comment = null // 是否为独立包 this.standalone = false // 资源路径匹配 this.subMatch = null // 打包文件列表 this._resourceList = [] Object.assign(this, options) this.fileName = [this.filePrefix, this.fileSubname, this.fileSuffix].filter((i) => i !== null).join('.') } addResource(fileBuildPath, fileContentBuffer, fileContentDigest) { if (this._resourceList[fileBuildPath]) { throw new Error(`### HONOR PACK ### ${fileBuildPath} 文件重复添加`) } this._resourceList[fileBuildPath] = true // 先把文件buff存起来,后续无需再读取 this._resourceList.push({ fileBuildPath, fileContentBuffer, fileContentDigest }) } get resourceList() { return this._resourceList } } export default Package /** * 创建完整包定义,整包可以理解为独立的子包 * @param appPackageName * @returns {Package} */ function createFullPackage(appPackageName) { return new Package({ filePrefix: appPackageName, fileSuffix: 'rpk', standalone: true }) } /** * 创建分包列表 * @param appPackageName {string} * @param subpackages {Array} manifest的subpackages字段的内容 * @param appIcon {string} * @param banner {string} (optional) * @returns {Package[]} - 返回创建的分包列表 */ function createSubPackages(appPackageName, subpackages, appIcon) { // 分包列表 let subPackages subPackages = [] // 第一位为主包, 除了分包所属资源,剩余资源都是主包的 const basePkg = new Package({ filePrefix: null, fileSubname: 'main', fileSuffix: 'rpk', standalone: true }) subPackages.push(basePkg) subpackages.forEach((subpkg) => { const partPkg = new Package({ filePrefix: null, fileSubname: subpkg.name, fileSuffix: 'rpk', subMatch: new RegExp(`^${subpkg.root}.*`, 'i'), standalone: subpkg.standalone || false, icon: subpkg.standalone ? subpkg.icon || appIcon : '' }) subPackages.push(partPkg) }) return subPackages } export { createFullPackage, createSubPackages }