# GYPacker **Repository Path**: gyarea_admin/gypacker ## Basic Information - **Project Name**: GYPacker - **Description**: 用于编译打包羔羊项目 - **Primary Language**: ActionScript - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2023-01-06 - **Last Updated**: 2025-12-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GYPacker #### 介绍 用于编译打包羔羊引擎创建的项目 #### 软件架构 软件架构说明 ### 主界面界面菜单 主界面提供一些辅助功能,其中核心功能请看编辑-编译发布 ![输入图片说明](%E4%B8%BB%E7%95%8C%E9%9D%A2.png) 1. 文件 - 打包 打包资源文件,把所有资源文件打包到一个bundle二进制文件里面,使用羔羊引擎的GYLoader类可以加载解压资源,目前支持以下扩展名文件的打包,png、jpg、mp3、js、json、atlas - 切图 可以把TexturePackager打包的图集,逆向切图回来 - 逆向资源 可以把上面打包的bundle二进制文件,解压回原始资源文件 - 正则替换 提供批量使用正则替换代码或者配置文件的功能 2. 编辑 - 模板输出 根据模板文件批量替换文件内容,其中文件内{name}被替换成文件名,{pre}被替换成文件路径 - 编译发布 提供羔羊项目的框架、模块编译打包,以及发布项目、微信小游戏功能,请参考下面编译发布说明 #### 安装教程 1. 该打包工具,请编写项目代码时,遵循模块化编写,否则羔羊的编译功能可能会编译报错,即每个类请使用module关键字包装成模块下的类或者不写module,默认成全局类,如下,编写的MyPlayer类,属于game_02模块 ![输入图片说明](module.png) 2. 该软件只支持window7以上系统,其他系统不支持,不需要安装 #### 使用说明 ### 1. 编译发布功能 - 主界面,点击编辑-编译发布,弹出编译发布面板,菜单有文件、编辑、项目、帮助,菜单功能说明如下 - 文件: - 文件校验 用于校验发布项目需要的资源文件是否在oss服务器上面已经齐全,需要开启oss验证功能,上传oss才使用(详细项目文件说明请查看羔羊项目的项目目录组成进行说明) - 编译设置 用于设置编译或者打包模块文件和框架文件的一些参数,如是否压缩、代码混淆等 - 编辑: - oss验证 用于提供oss验证信息,以便使用上传模块或者框架目录的功能 - 项目: - 项目构建 本地调试的时候,可以使用项目构建,进行编译运行,当然你也可以直接用vscode编辑器进行编译,但是羔羊打包工具的编译速度会比vscode的编译速度快 - 编译 本地调试的时候,可以使用编译进行代码编译,此项是增量编译,如果第一次编译,则是全量,因为本地没有编译信息。也就是增量编译只编译修改过的文件,如需求全量编译,项目构建 - 清理 清理本地编译记录以及编译产生的文件,清理后,编译时因为没有编译记录,所以自动会变成全量编译 - 发布 发布项目,发布后会在bin-release\web\下产生发布目录,如下,入口文件为main.html,version.json为版本配置(详细查看version.json配置说明),default_res为项目中,mainRes文件夹内的资源文件打包后的bundle二进制文件,configs里面的default_config.json则是游戏配置文件(详细查看config.json配置说明) - 发布小游戏 把当前项目中(必须是模块化项目工程,如使用羔羊模块化项目,适配模式请在config.json里面设置,发布面板设置noScale即可),编译列表中的第一个模块,发布成小游戏,注意必须选择一个当前的游戏模块到编译列表钟,发布界面如下, ![输入图片说明](miniGame.png) - 帮助: - 查看日志 查看打包工具的软件日志,可以查询到当天的编译记录、报错等信息 - 查看缓存 查看打包工具的软件缓存记录,可以查看软件的操作缓存 - 查看本地配置 查看本地配置,可以查看软件的配置信息,详细请看下面的打包工具本地配置 - 查看dev版本配置 如使用了oss上传功能,dev版本配置查看,可以查看oss服务器dev目录下的version.json、config.json配置信息 - 查看uat版本配置 如使用了oss上传功能,uat版本配置查看,可以查看oss服务器uat目录下的version.json、config.json配置信息 - 查看prod版本配置 如使用了oss上传功能,prod版本配置查看,可以查看oss服务器prod目录下的version.json、config.json配置信息 ### 2. 界面按钮功能说明 ![输入图片说明](%E7%BC%96%E8%AF%91%E5%8F%91%E5%B8%83.png) 界面的按钮功能均提供用于模块化项目使用,用于编译模块和公共库、发布项目、微信小游戏(项目结构请先学习下面的模块化项目说明) 1. 项目路径 点击浏览按钮,选择项目文件夹,如果你未创建项目,可以使用创建项目按钮创建 2. 编译模块 编译并且打包当前编译列表中的模块,请注意编译模块之前,保证框架和模块引用的公共库已经被编译过,否则可能会由于框架或公共库代码是旧的编译报错 3. 打包 仅打包当前编译列表中的模块,不进行代码编译 4. 创建模块 创建新的模块 5. 创建项目 创建新的项目,默认提供空白项目、模块化项目(项目结构请先学习下面的模块化项目说明)和UI展示项目创建 6. 设置预加载 设置version.json配置的预加载字段,按需使用,一般不用 7. 编译框架 编译框架代码,生产框架库js文件在mainLib文件夹下,并且会打包主程序资源目录mainRes文件夹下面的资源到default_res文件 8. 发布框架 发布项目代码到bin-release\web\下,产生configs配置文件夹,default_res主程序资源文件,main.html入口文件等 9. 发布uat 把发布的框架目录上传到oss上面的uat目录,需要开启oss验证 10. 灰度发布 把发布的框架目录上传到oss上面的prod目录并且设置version.json的gray字段,需要开启oss验证 11. 当前版本 当前使用的version.json版本,默认version.json,你可以设置版本号,如1.0.0,则生成version[1.0.0].json版本文件 12. 编译引擎 用于编译羔羊引擎,不需要使用 13. 模块列表 当前项目拥有的模块,模块目录存放于src/gameModule下 14. 公共库列表 当前项目拥有的公共库,公共库目录存放于src/moduleLib下 15. 编译列表 当前参与编译的模块或公共库 ### 3. 模块化项目 ![输入图片说明](proj.png) 通过打包工具的创建项目按钮,可以创建模块化项目,模块化项目,是羔羊引擎提供的默认模块化的开发框架,项目结构如下 - src - component:组件目录 - data: - egretExt:白鹭扩展,如需要使用eui、fairgui,则需要此目录下的EgretProto.ts、FairyGUIProto.ts、ProtoExt.ts进行注入以支持使用 - event:事件目录 - gameModule:模块文件目录,此文件夹存放外部模块,不会被打包进主程序内 单个游戏模块的目录结构: sound-声音目录,可有可无 img-图片目录,可有可无 ts-ts代码目录,此目录必须有且名字必须是ts,其他目录可自己创建,可有可无 js-编译后产生的js代码目录 moduleConfig.json-模块的配置文件,此文件必须有,打包工具识别是否模块的一个证明文件,目前配置内容只支持填写公共库依赖字段,如下填写,表示依赖引用map2D公共库, { "depends":["map2D"] } - manager:提供LayerManager.ts(层级管理器,用于层级分布、屏幕适配)、ConfigManager.ts(加载的config.json的配置管理)、GameManager.ts(游戏的全局管理)、 ModuleWatcher.ts(模块的观察类,用于模块的各个阶段的触发)、SkinManager.ts(皮肤管理器,用于创建组件)、WXManager.ts(提供微信小游戏sdk的接口、分享、截图之类) - moduleLib:公共库文件目录,此文件夹存放外部公共库模块,不会被打包到主程序内 单个公共库模块的目录结构: sound-声音目录,可有可无 img-图片目录,可有可无 ts-ts代码目录,此目录必须有且名字必须是ts,其他目录可自己创建,可有可无 js-编译后产生的js代码目录 - net:网络相关 - skin:皮肤类,存放自定义的皮肤 - sound:提供声音播放的声音管理器SoundManager - UI:UI文件夹,提供模块基类ModuleBase.ts,编写模块继承ModuleBase.ts,UIBase.ts类,普通UI继承UIBase - Browser.ts:浏览器相关信息 - DragTool.ts:用于拖拽布局使用,因为羔羊引擎仍未提供UI编辑器,如果需要布局位置,可以使用此类临时开启元素的拖拽进行布局查看坐标 - Log.ts:日志类,用于打印分级日志,以及上传日志到服务器记录 - Main.ts:主程序入口类 - MultiLang.ts:语言文本类 - UIControl.ts:UI模块控制器,用于控制模块的加载、预加载、显示、关闭、销毁等 ### 4. config.json配置 无论是空白项目,还是模块化项目,进入项目舞台前,需要加载config.json文件,以确定一些项目配置信息,以下是羔羊某个项目的config.json配置文件的配置说明,此配置可自行定义,不一定依据羔羊引擎的设计 `{ "winHeight": 1080, "winWidth": 1920, "platform": "", "libDirVer": {}, "designHeight": 1080, "designWidth": 1920, "scaleMode": "fixedHieght", "mdDirVer": {}, "screenMode": 0 }` - winHeight:窗口高度 - winWidth:窗口宽度 - designWidth:设计宽度 - designHeight:设计高度 - screenMode:屏幕模式,0普通 1画中画 - scaleMode:适配模式,noScale、showAll、fixedWidth、fixedHeight、noBorder ### 5. version.json配置 羔羊引擎设计,main.html入口文件加载主程序代码之前,可以先访问version.json配置文件,大家可以查看发布项目后的main.html内的代码以了解version.json的作用,以下字段是羔羊引擎某个项目业务设计为例,大家可自行设计配置内容 `{ "r_v": "1", "gray": [ { "r_v": "1", "size": 1817065, "users": ["219772500"], "entry_v": "20210608135518", "msg": "", "code": 200, "c_v": "20210518213219", "g_v": "210611101848", "lib_v": "20210518213219", "md5": "1E6C1C4EABCB4D8FE52B27DFF5131628" } ], "entry_v": "20210719154028", "entry_size": 2045164, "msg": "", "code": 200, "g_v": "210731155258", "lib_v": "20210731175018", "size": 1856607, "preload": [ { "type": 4, "url": "moduleRelease/peaProgramMainSceneV/20210812123921/peaProgramMainScene.zip", "md5": "b83bd7f19643e5279616f7a8cd9bca68", "fileID": "peaProgramMainScene", "verison": "b83bd7f19643e5279616f7a8cd9bca68" } ], "c_v": "20210731181325", "entry_md5": "39ff7299b6496b05de92298733ad2f34", "md5": "eb01d24d1c7527d3ad21f03ac110bce2" }` - 如果分app版本,version文件名字应该是version[app版本].json,在配置分版本的 - verson文件,如访问version[app版本].json失败,请重新访问version.json以保证app能正常进入 - r_v:资源配置版本,default_res文件下载版本 - entry_v:入口js文件的版本,指base.js的版本(引擎库版本),打包工具的编译设置的发布入口文件选项启用时,即可产生base.js文件 - entry_size:入口文件的大小 - msg:app要求要有的字段,随便写 - code:app要求要有的字段,固定200 - g_v:框架版本,指发布目录内的 发布日期.zip压缩包 - lib_v:公共库的版本号,提供给框架内部加载公共库,[lib_v].zip - size:框架大小 - preload:预加载的模块 - version:版本,一般是MD5 - md5:压缩包的md5 - c_v:config配置的版本,指default_config.json文件下载版本 - entry_md5:入口文件的md5,没有用了 - md5:框架压缩包的md5 - gray:灰度用户使用的配置,内容跟上面配置字段说明一样,属于灰度用户则可以使用gray字段里面的版本 ### 6.打包工具本地配置 本地配置config.json位于工具安装目录下, ![输入图片说明](config.png) 大部分配置内容用于配置编译路径以及oss路径,以下面为例说明 ``` { "resourceUrl":"img/", "seqResName":"sequence", "commonRes":"common", "settingList":[ ], "defaultSetting":{ }, "engineCompile":{ "combineFiles":["libs/zlib/zlib.js","bin/egret_GYLite2.0.1.js"], "outputFile":"outputLib/js/egret_GYLite2.0.1.js", "combineDTSFiles":["libs/zlib/zlib.min.d.ts","bin/egret_GYLite2.0.1.d.ts"], "outputDTSFile":"outputLib/js/egret_GYLite2.0.1.d.ts", "outputLibName":"egret_GYLite2.0.1" }, "compileConfig":{ "device":[ { "lab":"webgl", "outputDir":"", "exclude":[] } ], "platform":[ { "lab":"default", "output":"default_res", "ossTestRootUrl":"oss://yourAddress/yourProj/", "ossUatRootUrl":"oss://yourAddress/yourProj_uat/", "ossFormalRootUrl":"oss://yourAddress/yourProj_prod/", "ossTestUrl":"oss://yourAddress/yourProj/default/", "ossModuleUrls":["oss://yourAddress/yourProj/moduleRelease/"], "ossLibUrls":["oss://yourAddress/yourProj/moduleLibRelease/"], "ossUatUrl":"oss://yourAddress/yourProj_uat/default/", "ossUatModuleUrl":"oss://yourAddress/yourProj_uat/moduleRelease/", "ossUatLibUrl":"oss://yourAddress/yourProj_uat/moduleLibRelease/", "ossFormalUrl":"oss://yourAddress/yourProj/default/", "ossFormalModuleUrl":"oss://yourAddress/yourProj/moduleRelease/", "ossFormalLibUrl":"oss://yourAddress/yourProj/moduleLibRelease/", "exclude":[] } ] }, "defaultData":{}, "moduleLibsInclude":[], "ossVirtualRoot":"oss://yourAddress", "ossVirtualProdRoot":"oss://yourAddress", "ossRoot":"https://yourAddress.oss-cn-shenzhen.aliyuncs.com", "ossProdRoot":"https://yourAddress.oss-cn-shenzhen.aliyuncs.com", "ossUatUrl":"https://oss.yourAddress.com", "ossProdUrl":"https://yourAddress.com" } ``` ``` { resourceUrl:"无作用,请勿改动", seqResName:"无作用,请勿改动", commonRes:"无作用,请勿改动", settingList:"无作用,请勿改动", defaultSetting:"无作用,请勿改动", engineCompile: { //引擎编译,如无需要使用此功能,不需要改动, combineFiles:["编译的合并的js文件列表"], outputFile:"引擎编译输出的js路径", combineDTSFiles:["引擎合并的dts文件列表"], outputDTSFile:"引擎编译输出的dts文件路径", outputLibName:"输出的引擎文件名" }, compileConfig:{ //编译配置 device:[ { lab:"webgl", outputDir:"", exclude:[] } ], platform:[ { lab:"default", output:"编译输出的主程序资源名", ossTestRootUrl:"oss://开发环境的oss桶地址/项目的dev目录/", ossUatRootUrl:"oss://开发环境的oss桶地址/项目的uat目录/", ossFormalRootUrl:"oss://生产环境的oss桶地址/项目的生产目录/", ossTestUrl:"oss://开发环境的oss桶地址/项目的dev目录/default/", ossModuleUrls:["oss://开发环境的oss桶地址/项目的dev目录/moduleRelease/"], ossLibUrls:["oss://开发环境的oss桶地址/项目的dev目录/moduleLibRelease/"], ossUatUrl:"oss://开发环境的oss桶地址/项目的uat目录/default/", ossUatModuleUrl:"oss://开发环境的oss桶地址/项目的uat目录/moduleRelease/", ossUatLibUrl:"oss://开发环境的oss桶地址/项目的uat目录/moduleLibRelease/", ossFormalUrl:"oss://生产环境的oss桶地址/项目的prod目录/default/", ossFormalModuleUrl:"oss://生产环境的oss桶地址/项目的prod目录/moduleRelease/", ossFormalLibUrl:"oss://生产环境的oss桶地址/项目的prod目录/moduleLibRelease/", exclude:["打包主程序资源需要排除的文件列表(模糊匹配文件名)"] } ] }, defaultData:"无作用,请勿改动", moduleLibsInclude:["打包公共库zip时,应当包含的公共库列表"], ossVirtualRoot:"oss://开发环境的oss桶地址", ossVirtualProdRoot:"oss://生产环境的oss桶地址", ossRoot:"https://开发环境的oss原始地址.oss-cn-shenzhen.aliyuncs.com", ossProdRoot:"https://生产环境的oss原始地址.oss-cn-shenzhen.aliyuncs.com", ossUatUrl:"https://uat域名.com", ossProdUrl:"https://生产域名.com" } ```