123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- 'use strict'
- //const { dir } = require('console')
- const fs = require('fs')
- const path = require('path')
-
- module.exports = {
- load() {
- //当package被正确加载的时候执行
- Editor.log('package load')
- },
-
- unload() {
- //当package被正确卸载的时候执行
-
- Editor.log('package unload')
- },
-
- messages: {
- async generateMeta() {
- await buildAllABs()
- async function buildAllABs() {
- Editor.log('构建所有ab包')
- try {
- let isNativeRemote = false
- // let isMiniGameRemote = true
- let isMiniGameRemote = true
- // buildAB('mainpackage/Data', isNativeRemote, isMiniGameRemote)
- // buildAB('mainpackage/mainscene', isNativeRemote, isMiniGameRemote)
- // await buildABs('mainpackage/UI', isNativeRemote, isMiniGameRemote, 9)
- await buildABs('remote/UI', isNativeRemote, isMiniGameRemote, 9)
- // await buildABs('remote/resource', isNativeRemote, isMiniGameRemote, 9)
- } catch (e) {
- Editor.log('构建所有ab包,失败[%s]', e.message)
- return
- }
- Editor.log('构建所有ab包,成功')
- }
- },
-
- start() {
- Editor.log('开始生成assetsbundle meta文件')
- generateDir('remote', false)
- generateDir('mainpackage', false)
- Editor.assetdb.refresh('db://assets/remote/', function (err, results) {})
- Editor.assetdb.refresh('db://assets/mainpackage/', function (err, results) {})
- function generateDir(dirName, isRemote = true) {
- var rootDir = path.join(path.resolve(__dirname, '../..'), 'assets', dirName)
- // var eftBattleDir = path.join(rootDir, 'effect', 'battle')
- // readDirSync(eftBattleDir, isRemote)
- // var eftUIDir = path.join(rootDir, 'effect', 'ui')
- // readDirSync(eftUIDir, isRemote)
- // var spineDir = path.join(rootDir, 'Spine')
- // readDirSync(spineDir, isRemote)
- // var uiDir = path.join(rootDir, 'UI')
- // readDirSync(uiDir, isRemote)
- }
- function readDirSync(dir, isRemote = true) {
- var stat = fs.statSync(dir)
- if (!stat.isDirectory()) {
- return
- } else {
- var subpaths = fs.readdirSync(dir)
- Editor.log('开始处理:', dir)
- for (var i = 0; i < subpaths.length; i++) {
- var subpath = path.join(dir, subpaths[i])
- stat = fs.statSync(subpath)
- var extensionName = path.extname(subpath).toLowerCase()
- if (stat.isFile() && extensionName === '.meta') {
- Editor.log(subpath)
- var metaData = fs.readFileSync(subpath)
- var data = JSON.parse(metaData)
- // let metaData=await AssetDB.getMe
- data.isBundle = true
- data.isRemoteBundle = {
- // android: isRemote,
- // ios: isRemote,
- wechatgame: false,
- }
- data.inlineSpriteFrames = {
- // android: false,
- // ios: false,
- wechatgame: false,
- }
- data.compressionType = {
- // android: 'default',
- // ios: 'default',
- wechatgame: 'merge_all_json',
- }
- data.optimizeHotUpdate = {
- // android: false,
- // ios: false,
- wechatgame: false,
- }
- var dataJson = JSON.stringify(data, null, 2)
- fs.writeFileSync(subpath, dataJson)
- }
- }
- }
- }
- },
- },
- }
-
- function buildAB(result, isNativeRemote, isMiniGameRemote, pp) {
- Editor.log('构建ab包[%s],[%d]', result.url, pp)
-
- let uuid = result.uuid
- let metaData = Editor.assetdb.loadMetaByUuid(uuid)
-
- let metaJsonData = {
- ver: metaData.ver,
- uuid: metaData.uuid,
- isBundle: true,
- bundleName: cc.path.basename(result.url), //path.posix.relative('db://assets/', result.url),
- priority: pp,
- subMetas: metaData.subMetas,
- }
- metaJsonData.isRemoteBundle = {
- android: isNativeRemote,
- ios: isNativeRemote,
- wechatgame: isMiniGameRemote,
- }
- metaJsonData.inlineSpriteFrames = {
- android: false,
- ios: false,
- wechatgame: false,
- }
- metaJsonData.compressionType = {
- // android: 'merge_all_json',
- // ios: 'merge_all_json',
- // 'web-mobile': 'merge_all_json',
- // 'web-desktop': 'merge_all_json',
- wechatgame: 'merge_all_json',
- }
- metaJsonData.optimizeHotUpdate = {
- android: false,
- ios: false,
- wechatgame: false,
- }
-
- let metaJson = JSON.stringify(metaJsonData, null, 2)
-
- Editor.assetdb.saveMeta(metaData.uuid, metaJson)
- Editor.log('构建ab包[%s],成功[%d]', result.url, pp)
- }
-
- async function buildABs(dir, isNativeRemote, isMiniGameRemote, pp) {
- return new Promise((resolve, reject) => {
- let url = 'db://assets/' + dir + '/*'
- Editor.log('构建ab包,目录[%s]', url, pp)
- Editor.assetdb.queryAssets(url, 'folder', async (err, results) => {
- if (err) {
- Editor.error(err)
- reject(err)
- }
-
- for (let i = 0; i < results.length; i++) {
- buildAB(results[i], isNativeRemote, isMiniGameRemote, pp)
- }
- resolve('')
- })
- })
- }
|