@taobao-minigame/cli 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/lib/commander/app/index.js +1 -1
- package/lib/commander/config.js +1 -1
- package/lib/commander/preview/index.js +1 -1
- package/lib/commander/preview/miniapp_preview.js +1 -1
- package/lib/commander/preview/minigame_preview.js +1 -1
- package/lib/commander/preview/standard_preview.js +1 -1
- package/lib/commander/upload/index.js +1 -1
- package/lib/commander/upload/miniapp_upload.js +1 -1
- package/lib/commander/upload/minigame_upload.js +1 -1
- package/lib/commander/upload/standard_upload.js +1 -1
- package/lib/index.js +1 -1
- package/lib/pipelines/remoteConfig.js +1 -1
- package/lib/utils/apis/index.js +1 -1
- package/lib/utils/apis/standard_api.js +1 -1
- package/lib/utils/projects/miniapp/MiniApp.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ npm install -g @taobao-minigame/cli
|
|
|
11
11
|
安装完成后验证:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
tbgame -
|
|
14
|
+
tbgame -V
|
|
15
15
|
tbgame -h
|
|
16
16
|
```
|
|
17
17
|
|
|
@@ -25,7 +25,7 @@ tbgame config set token <token>
|
|
|
25
25
|
tbgame preview --appId <appId> --type minigame
|
|
26
26
|
|
|
27
27
|
# 3. 上传发布版本
|
|
28
|
-
tbgame upload --appId <appId> --type minigame --version 1.0.0
|
|
28
|
+
tbgame upload --appId <appId> --type minigame --app-version 1.0.0
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
> 推荐使用 Token 认证:在开放平台后台「小游戏开发 → 开发设置」创建/查看 CLI Token,再通过 `tbgame config set token <token>` 写入本地。
|
|
@@ -79,17 +79,17 @@ tbgame upload [options]
|
|
|
79
79
|
| `-i, --input <input>` | 应用根目录 | 当前目录 |
|
|
80
80
|
| `-a, --appId <appId>` | 指定应用 appId | - |
|
|
81
81
|
| `-t, --type <open_type>` | 应用类型,见下方[应用类型](#应用类型) | - |
|
|
82
|
-
| `-v, --version <version>` | 指定上传的应用版本号,不传时基于线上最新版本自动递增 | - |
|
|
82
|
+
| `-v, --app-version <version>` | 指定上传的应用版本号,不传时基于线上最新版本自动递增 | - |
|
|
83
83
|
| `--renderMode <mode>` | (小游戏)渲染模式:`highPerformance` \| `normal` | `highPerformance` |
|
|
84
84
|
|
|
85
85
|
示例:
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
# 最少参数:项目根目录执行,不传 --version 时基于线上最新版本自动递增
|
|
88
|
+
# 最少参数:项目根目录执行,不传 --app-version 时基于线上最新版本自动递增
|
|
89
89
|
tbgame upload --appId 1234567 --type minigame
|
|
90
90
|
|
|
91
91
|
# 最全参数:显式指定项目目录、版本号、渲染模式
|
|
92
|
-
tbgame upload --input /path/to/project --appId 1234567 --type minigame --version 1.0.0 --renderMode highPerformance
|
|
92
|
+
tbgame upload --input /path/to/project --appId 1234567 --type minigame --app-version 1.0.0 --renderMode highPerformance
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
### tbgame app
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(p){return p&&p.__esModule?p:{default:p}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_app=commander_app;const commander_1=__importDefault(require("commander")),utils_1=require("../../utils"),apis_1=require("../../utils/apis"),logger=(0,utils_1.getLogger)("app");function commander_app(){try{commander_1.default.command("app").description("获取开放平台的应用的基础信息").option("-a, --appId <appId>","指定应用appId").allowUnknownOption().action((0,apis_1.withCmdTrack)("app",async p=>{const{appId:e}=p;if((0,utils_1.goldlog)("app"),!e)throw new Error("当前路径没有绑定 appId ,可以通过 --appId 指定");if(e){const p=await(0,apis_1.getAppInfo)(e);logger.debug("appInfo",p),logger.success(`当前应用名称: ${p?.name} 最新线上版本: ${p?.latestVersion}`)}},p=>({appId:p[0]?.appId})))}catch(p){logger.error(p)}}
|
package/lib/commander/config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_config=commander_config;const commander_1=__importDefault(require("commander")),core_1=require("../core"),utils_1=require("../utils"),apis_1=require("../utils/apis"),constants_1=require("../constants"),logger=(0,utils_1.getLogger)("commander_config");function commander_config(){commander_1.default.command("config <options...>").description("设置当前工具的配置").usage(`\n 设置值${constants_1.CLI_COMMAND_NAME} config set [key] [value] e.g. ${constants_1.CLI_COMMAND_NAME} config set key1 value1\n 获取值${constants_1.CLI_COMMAND_NAME} config get [key] e.g. ${constants_1.CLI_COMMAND_NAME} config get key1\n 显示所有值 ${constants_1.CLI_COMMAND_NAME} config show\n `).allowUnknownOption().action((0,apis_1.withCmdTrack)("config",async e=>{if((0,utils_1.goldlog)("config"),Array.isArray(e)&&e.length){const o=e[0],n=(0,core_1.getProvider)().getCliConfig();if("set"===o&&3===e.length){const o=e[1],t=e[2];if(o===constants_1.StoreKey.ENV){const e=Object.keys(constants_1.ENV_HOST);if(!e.includes(t))
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_config=commander_config;const commander_1=__importDefault(require("commander")),core_1=require("../core"),utils_1=require("../utils"),apis_1=require("../utils/apis"),constants_1=require("../constants"),logger=(0,utils_1.getLogger)("commander_config");function commander_config(){commander_1.default.command("config <options...>").description("设置当前工具的配置").usage(`\n 设置值${constants_1.CLI_COMMAND_NAME} config set [key] [value] e.g. ${constants_1.CLI_COMMAND_NAME} config set key1 value1\n 获取值${constants_1.CLI_COMMAND_NAME} config get [key] e.g. ${constants_1.CLI_COMMAND_NAME} config get key1\n 显示所有值 ${constants_1.CLI_COMMAND_NAME} config show\n `).allowUnknownOption().action((0,apis_1.withCmdTrack)("config",async e=>{if((0,utils_1.goldlog)("config"),Array.isArray(e)&&e.length){const o=e[0],n=(0,core_1.getProvider)().getCliConfig();if("set"===o&&3===e.length){const o=e[1],t=e[2];if(o===constants_1.StoreKey.ENV){const e=Object.keys(constants_1.ENV_HOST);if(!e.includes(t))throw new Error(`无效的环境值 "${t}",仅支持: ${e.join(" / ")}`)}return n.set(o,t),void logger.success("设置成功")}if("get"===o&&2===e.length){const o=e[1];return void logger.info(`${o}的值为: ${n.get(o)}`)}if("show"===o&&1===e.length)return void n.showConfig();throw new Error("请按照规定传入指定命令")}throw new Error("请按照规定传入指定命令")}))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_buildPreview=commander_buildPreview;const commander_1=__importDefault(require("commander")),cli_table3_1=__importDefault(require("cli-table3")),chalk_1=__importDefault(require("chalk")),core_1=require("../../core"),utils_1=require("../../utils"),apis_1=require("../../utils/apis"),state_1=require("../../process/state"),constants_1=require("../../constants"),miniapp_preview_1=require("./miniapp_preview"),minigame_preview_1=require("./minigame_preview"),widget_preview_1=require("./widget_preview"),standard_preview_1=require("./standard_preview"),webapp_preview_1=require("./webapp_preview"),logger=(0,utils_1.getLogger)("preview");function commander_buildPreview(e=!1){commander_1.default.command("preview").description("生成预览链接/二维码").option("-i, --input <input>","应用根目录 mini.project.json或者app.json/package.json的根目录",process.cwd()).option("-a, --appId <appId>","指定应用appId").option("-t, --type <open_type>",`指定应用类型 ${JSON.stringify(constants_1.SCENE_PLUGIN_SUITE)}`).option("-d, --debug","是否开启真机调试",!1).option("-c, --cloud","是否开启云构建",!1).option("--pagePath <pagePath>","指定访问首页").option("--pageQuery <pageQuery>",'页面参数,e.g. "a=1&b=2"').option("--query <query>","全局query").option("--copy","复制预览码到剪贴板",!1).option("--renderMode <mode>","小游戏渲染模式: highPerformance | normal(默认 highPerformance,显式 normal 关闭)").option("--noBuild","跳过云构建,使用本地缓存的上一次构建结果生成二维码(无缓存时报错)",!1).option("--autoOpenDevtools","拿到 DevTools 地址后自动用本地 Chrome 打开(路径取 PUPPETEER_PATH,无则使用系统默认 Chrome)",!1).allowUnknownOption().action((0,apis_1.withCmdTrack)("preview",async e=>{const t=(0,core_1.getProvider)().getProcessState();t.setState(state_1.EProcessStateName.PARSE_ARV,e);const{appId:a,type:_}=t.getState(state_1.EProcessStateName.PARSE_ARV);if(a)
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_buildPreview=commander_buildPreview;const commander_1=__importDefault(require("commander")),cli_table3_1=__importDefault(require("cli-table3")),chalk_1=__importDefault(require("chalk")),core_1=require("../../core"),utils_1=require("../../utils"),apis_1=require("../../utils/apis"),state_1=require("../../process/state"),constants_1=require("../../constants"),miniapp_preview_1=require("./miniapp_preview"),minigame_preview_1=require("./minigame_preview"),widget_preview_1=require("./widget_preview"),standard_preview_1=require("./standard_preview"),webapp_preview_1=require("./webapp_preview"),logger=(0,utils_1.getLogger)("preview");function commander_buildPreview(e=!1){commander_1.default.command("preview").description("生成预览链接/二维码").option("-i, --input <input>","应用根目录 mini.project.json或者app.json/package.json的根目录",process.cwd()).option("-a, --appId <appId>","指定应用appId").option("-t, --type <open_type>",`指定应用类型 ${JSON.stringify(constants_1.SCENE_PLUGIN_SUITE)}`).option("-d, --debug","是否开启真机调试",!1).option("-c, --cloud","是否开启云构建",!1).option("--pagePath <pagePath>","指定访问首页").option("--pageQuery <pageQuery>",'页面参数,e.g. "a=1&b=2"').option("--query <query>","全局query").option("--copy","复制预览码到剪贴板",!1).option("--renderMode <mode>","小游戏渲染模式: highPerformance | normal(默认 highPerformance,显式 normal 关闭)").option("--noBuild","跳过云构建,使用本地缓存的上一次构建结果生成二维码(无缓存时报错)",!1).option("--autoOpenDevtools","拿到 DevTools 地址后自动用本地 Chrome 打开(路径取 PUPPETEER_PATH,无则使用系统默认 Chrome)",!1).allowUnknownOption().action((0,apis_1.withCmdTrack)("preview",async e=>{const t=(0,core_1.getProvider)().getProcessState();t.setState(state_1.EProcessStateName.PARSE_ARV,e);const{appId:a,type:_}=t.getState(state_1.EProcessStateName.PARSE_ARV);if(!a)throw new Error("当前路径没有绑定 appId,可以通过 --appId 指定");if(!_||!Object.values(constants_1.SCENE_PLUGIN_SUITE).includes(_)){const e=new cli_table3_1.default({head:[chalk_1.default.magenta("应用类型"),chalk_1.default.red("对应指定的type")],style:{"padding-left":1,"padding-right":1},colWidths:[20,20]});throw e.push([chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.miniapp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小程序)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.widget),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小部件)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.minigame),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小游戏)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.standardizedApp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.标准化应用)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.isvCMS),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.商家后台应用)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.webapp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.配置应用)]),logger.log(e.toString()),new Error("当前路径未指定正确的应用类型 ,可以通过 --type 指定")}switch((0,utils_1.goldlog)("preview",_),_){case constants_1.SCENE_PLUGIN_SUITE.小程序:await(0,miniapp_preview_1.miniapp_preview)(t.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.小部件:await(0,widget_preview_1.widget_preview)(t.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.小游戏:await(0,minigame_preview_1.minigame_preview)(t.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.标准化应用:case constants_1.SCENE_PLUGIN_SUITE.商家后台应用:await(0,standard_preview_1.standard_preview)(t.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.配置应用:await(0,webapp_preview_1.webapp_preview)(t.getState(state_1.EProcessStateName.PARSE_ARV))}},e=>({appType:e[0]?.type,appId:e[0]?.appId})))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var i=Object.getOwnPropertyDescriptor(t,a);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,i)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[t.length]=a);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var a={};if(null!=t)for(var r=e(t),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(a,t,r[i]);return __setModuleDefault(a,t),a}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.miniapp_preview=void 0;const minidev_1=__importStar(require("minidev")),query_string_1=__importDefault(require("query-string")),fs_extra_1=__importDefault(require("fs-extra")),path_1=__importDefault(require("path")),utils_1=require("../../utils"),core_1=require("../../core"),apis_1=require("../../utils/apis"),state_1=require("../../process/state"),utils_2=require("../../utils");var MINIAPP_BIZTYPE;async function createDebugParams(e){const t=e.getState(state_1.EProcessStateName.PARSE_ARV),{tyroId:a,channelId:r,remoteDebugUUID:i,devtoolUrl:s}=await(0,apis_1.fetchDebugParams)(t);e.setState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT,{tyroId:a,channelId:r,remoteDebugUUID:i,devtoolUrl:s})}function do_tyro_inject(e,t){const{appId:a}=e;let{tyroId:r,channelId:i}=t.getState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT);if(!r||!i)throw logger.error("调试 id 获取出错"),new Error("调试 id 获取出错");const s=JSON.parse(e.extraInfo);return logger.info("开始生成远程调试码"),s.uuid=r,s.channelId=i,s.isRemoteX=!0,s.appId=a,s.scene="DEBUG",s.syncToOffline=!1,e.extraInfo=JSON.stringify(s),e}async function generatePushParams(e,t,a,r){const i=fs_extra_1.default.readJsonSync(path_1.default.join(a,"mini.built.json")),{packageInfo:s}=i,{mainUrl:n,extendInfo:o,extraInfo:u,subUrl:l}=s;let c="";e.isPlugin||(c=await(0,utils_1.uploadFileToOSS)(t.tarFilePath));let p,_,g="";e.isPlugin&&(g=await(0,utils_1.uploadFileToOSS)(t.plugin.tarFilePath),c=await(0,utils_1.uploadFileToOSS)(t.client.tarFilePath)),e.appxNg&&(_=c,p=g);const d=i.appId,P=(i.packageInfo.pluginList||[]).map(e=>({pluginId:e.pluginId||e.provider,pluginVersion:e.version})),I=JSON.parse(o),{launchParams:m}=I,S={...m,...r,ignoreHttpReqPermission:!0,appxRouteFramework:e.appxNg?"independent":"NO"};return{appId:d,mainUrl:n,clientType:"taobao",extendInfo:JSON.stringify({...I,launchParams:S}),idePreviewType:"muti",openDebugSwitch:'{"enableBugme":true}',extraInfo:u,pluginOssKey:g,debugType:"MINI",subUrl:l,pluginList:P,ossKey:c,appType:"tinyApp",channelId:r.channelId,packageName:"dist.tar",newOssKey:_,newPluginOssKey:p}}async function generateLocalPreviewSubmitParams(e){const t=e.getProcessState(),{buildResult:a,output:r}=t.getState(state_1.EProcessStateName.MINIAPP_LOCAL_BUILD),{channelId:i,tyroId:s,remoteDebugUUID:n}=t.getState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT),o=await generatePushParams(e.getLocalMiniAppInfo(),a,r,{channelId:i,tyroId:s,remoteDebugUUID:n});logger.debug("localPreviewSubmitParams",o),t.setState(state_1.EProcessStateName.MINIAPP_GENERATE_PREVIEW_PARAMS,o)}async function generatePreviewCloudSubmitParams(e){const t=e.getProcessState(),{buildResult:a,output:r}=t.getState(state_1.EProcessStateName.MINIAPP_LOCAL_BUILD),{appId:i,input:s,debug:n,cloud:o}=t.getState(state_1.EProcessStateName.PARSE_ARV);logger.debug("buildResult",a);const u=await(0,utils_1.getMiniAppBuildParams)(s,i),l=e.getLocalMiniAppInfo(),{isPlugin:c,appxNg:p}=l,_=fs_extra_1.default.readJsonSync(path_1.default.join(r,"mini.built.json")),{packageInfo:g}=_,{mainUrl:d,subUrl:P}=g,{zipFile:I}=await runSourcePack(e);let m={appId:i,extendInfo:u.extendInfo,extraInfo:u.extraInfo,isPlugin:c,appx2:p,filepath:I};n&&(m=do_tyro_inject(m,t)),logger.debug("params",m),logger.debug("buildParams",u);const{taskId:S}=await(0,apis_1.doCloudBuild)(m),{pkgUrl:f,pluginUrl:E,subPackages:
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var i=Object.getOwnPropertyDescriptor(t,a);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,i)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[t.length]=a);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var a={};if(null!=t)for(var r=e(t),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(a,t,r[i]);return __setModuleDefault(a,t),a}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.miniapp_preview=void 0;const minidev_1=__importStar(require("minidev")),query_string_1=__importDefault(require("query-string")),fs_extra_1=__importDefault(require("fs-extra")),path_1=__importDefault(require("path")),utils_1=require("../../utils"),core_1=require("../../core"),apis_1=require("../../utils/apis"),state_1=require("../../process/state"),utils_2=require("../../utils");var MINIAPP_BIZTYPE;async function createDebugParams(e){const t=e.getState(state_1.EProcessStateName.PARSE_ARV),{tyroId:a,channelId:r,remoteDebugUUID:i,devtoolUrl:s}=await(0,apis_1.fetchDebugParams)(t);e.setState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT,{tyroId:a,channelId:r,remoteDebugUUID:i,devtoolUrl:s})}function do_tyro_inject(e,t){const{appId:a}=e;let{tyroId:r,channelId:i}=t.getState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT);if(!r||!i)throw logger.error("调试 id 获取出错"),new Error("调试 id 获取出错");const s=JSON.parse(e.extraInfo);return logger.info("开始生成远程调试码"),s.uuid=r,s.channelId=i,s.isRemoteX=!0,s.appId=a,s.scene="DEBUG",s.syncToOffline=!1,e.extraInfo=JSON.stringify(s),e}async function generatePushParams(e,t,a,r){const i=fs_extra_1.default.readJsonSync(path_1.default.join(a,"mini.built.json")),{packageInfo:s}=i,{mainUrl:n,extendInfo:o,extraInfo:u,subUrl:l}=s;let c="";e.isPlugin||(c=await(0,utils_1.uploadFileToOSS)(t.tarFilePath));let p,_,g="";e.isPlugin&&(g=await(0,utils_1.uploadFileToOSS)(t.plugin.tarFilePath),c=await(0,utils_1.uploadFileToOSS)(t.client.tarFilePath)),e.appxNg&&(_=c,p=g);const d=i.appId,P=(i.packageInfo.pluginList||[]).map(e=>({pluginId:e.pluginId||e.provider,pluginVersion:e.version})),I=JSON.parse(o),{launchParams:m}=I,S={...m,...r,ignoreHttpReqPermission:!0,appxRouteFramework:e.appxNg?"independent":"NO"};return{appId:d,mainUrl:n,clientType:"taobao",extendInfo:JSON.stringify({...I,launchParams:S}),idePreviewType:"muti",openDebugSwitch:'{"enableBugme":true}',extraInfo:u,pluginOssKey:g,debugType:"MINI",subUrl:l,pluginList:P,ossKey:c,appType:"tinyApp",channelId:r.channelId,packageName:"dist.tar",newOssKey:_,newPluginOssKey:p}}async function generateLocalPreviewSubmitParams(e){const t=e.getProcessState(),{buildResult:a,output:r}=t.getState(state_1.EProcessStateName.MINIAPP_LOCAL_BUILD),{channelId:i,tyroId:s,remoteDebugUUID:n}=t.getState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT),o=await generatePushParams(e.getLocalMiniAppInfo(),a,r,{channelId:i,tyroId:s,remoteDebugUUID:n});logger.debug("localPreviewSubmitParams",o),t.setState(state_1.EProcessStateName.MINIAPP_GENERATE_PREVIEW_PARAMS,o)}async function generatePreviewCloudSubmitParams(e){const t=e.getProcessState(),{buildResult:a,output:r}=t.getState(state_1.EProcessStateName.MINIAPP_LOCAL_BUILD),{appId:i,input:s,debug:n,cloud:o}=t.getState(state_1.EProcessStateName.PARSE_ARV);logger.debug("buildResult",a);const u=await(0,utils_1.getMiniAppBuildParams)(s,i),l=e.getLocalMiniAppInfo(),{isPlugin:c,appxNg:p}=l,_=fs_extra_1.default.readJsonSync(path_1.default.join(r,"mini.built.json")),{packageInfo:g}=_,{mainUrl:d,subUrl:P}=g,{zipFile:I}=await runSourcePack(e);let m={appId:i,extendInfo:u.extendInfo,extraInfo:u.extraInfo,isPlugin:c,appx2:p,filepath:I};n&&(m=do_tyro_inject(m,t)),logger.debug("params",m),logger.debug("buildParams",u);const{taskId:S}=await(0,apis_1.doCloudBuild)(m),{pkgUrl:f,pluginUrl:E,subPackages:w,newPkgUrl:b,newPluginUrl:y}=await(0,apis_1.getCloudBuildResult)(S),N={appId:i,pkgUrl:f,pluginUrl:E,newPkgUrl:b,newPluginUrl:y,mainUrl:d,extendInfo:m.extendInfo,pluginList:u?.pluginList,subPackages:w?.map(e=>({type:e.type,path:e.path,buildPackageUrl:e.tarFilePath}))};logger.debug("cloudBuiltPackageParams",N),t.setState(state_1.EProcessStateName.MINIAPP_GENERATE_PREVIEW_PARAMS,N)}async function pushPreview(e){const t=e.getState(state_1.EProcessStateName.MINIAPP_GENERATE_PREVIEW_PARAMS),{appId:a,cloud:r}=e.getState(state_1.EProcessStateName.PARSE_ARV),{deployVersion:i}=r?await(0,apis_1.pushCloudPreview)(t):await(0,apis_1.pushLocalPreview)(t),s=await(0,apis_1.getPreviewInfo)({appId:a,deployVersion:i});e.setState(state_1.EProcessStateName.PUSH_PREVIEW_RESULT,{qrCode:s.qrCode,deployVersion:i})}function generatePreviewUrl(e){const t=e.getProcessState(),{qrCode:a}=t.getState(state_1.EProcessStateName.PUSH_PREVIEW_RESULT),{debug:r,cloud:i,pagePath:s,pageQuery:n,query:o}=t.getState(state_1.EProcessStateName.PARSE_ARV),{tyroId:u,channelId:l,remoteDebugUUID:c,devtoolUrl:p}=t.getState(state_1.EProcessStateName.MINIAPP_DEBUG_INJECT);let _={};s&&(_={..._,page:`${s}${n?`?${n}`:""}`}),o&&(_={..._,query:o}),i&&r?_={..._,tyroId:u,channelId:l,isRemoteX:!0}:r&&(_={..._,channelId:c});const g=`${a}&${query_string_1.default.stringify(_)}`;logger.debug(`qrCode:${a} qrCodeParams:${query_string_1.default.stringify(_)}`),r&&logger.info("在线调试面板:",p),t.setState(state_1.EProcessStateName.GENERATE_PREVIEW_URL,{qrCodeUrl:g})}!function(e){e[e.TAOJIMU=14]="TAOJIMU"}(MINIAPP_BIZTYPE||(MINIAPP_BIZTYPE={}));const runSourcePack=async e=>{const t=e.getProcessState(),{input:a}=t.getState(state_1.EProcessStateName.PARSE_ARV);return await minidev_1.default.pack({project:a})},runLocalBuild=async e=>{const t=e.getProcessState(),{appId:a,input:r,debug:i}=t.getState(state_1.EProcessStateName.PARSE_ARV),s=(0,utils_2.getTmpDir)(),n=await minidev_1.default.build({project:r,output:s,appId:a,buildTarget:i?minidev_1.EBuildTarget.RemoteBoatman:minidev_1.EBuildTarget.Preview});return t.setState(state_1.EProcessStateName.MINIAPP_LOCAL_BUILD,{output:s,buildResult:n.result}),n.result},logger=(0,utils_1.getLogger)("miniapp_preview"),miniapp_preview=async e=>{try{const{appId:t,input:a,debug:r,cloud:i,copy:s}=e;if(!1===(0,utils_1.validateProject)(a))throw new Error("不是合规的小程序项目目录,请检查");const n=(0,core_1.getProvider)(),o=n.getProcessState();o.setState(state_1.EProcessStateName.PARSE_ARV,e),await runLocalBuild(n),r&&await createDebugParams(o),logger.success("本地构建产物包成功,开始推送"),i?await generatePreviewCloudSubmitParams(n):await generateLocalPreviewSubmitParams(n),await pushPreview(o),generatePreviewUrl(n);const{qrCodeUrl:u}=o.getState(state_1.EProcessStateName.GENERATE_PREVIEW_URL);logger.success("小程序二维码地址:",u),s&&((0,utils_1.clipText)(u),logger.success("已复制二维码到剪切板")),(0,utils_1.showQrCode)(u)}catch(e){throw e}};exports.miniapp_preview=miniapp_preview;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.minigame_preview=void 0;const constants_1=require("../../constants"),provider_1=require("../../core/provider"),utils_1=require("../../utils"),state_1=require("../../process/state"),pack_1=require("../../utils/projects/minigame/pack"),renderMode_1=require("../../utils/projects/minigame/renderMode"),qrCodeDecorator_1=require("../../utils/projects/minigame/qrCodeDecorator"),devToolsWaiter_1=require("../../utils/projects/minigame/devToolsWaiter"),minigame_api_1=require("../../utils/apis/minigame_api"),buildCache_1=require("../../utils/projects/minigame/buildCache"),openDevtools_1=require("../../utils/projects/minigame/openDevtools");require("colors");const logger=(0,utils_1.getLogger)("minigame_preview"),getAppInfo=async e=>{const o=(0,provider_1.getProvider)().getRequest();return await o.post("ide/api/appInfo",{appId:e})},minigame_preview=async e=>{const{appId:o,input:t,debug:n,cloud:s,copy:i,renderMode:r,noBuild:a,autoOpenDevtools:l}=e,g=!!n,_=g?constants_1.DEBUG_LOG:constants_1.PREVIEW_LOG,c=g?"调试":"预览";(0,utils_1.goldlog)(_.START,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),logger.debug("入参",e);const d=(0,provider_1.getProvider)(),u=d.getProcessState(),p=d.getCliConfig(),E=p.get(constants_1.StoreKey.TB_TOKEN),m=p.get(constants_1.StoreKey.ENV,constants_1.DEFAULT_ENV),I=m===constants_1.EEnv.DAILY?constants_1.EEnv.DAILY:m===constants_1.EEnv.PREPUB||"pre"===m?constants_1.EEnv.PREPUB:constants_1.EEnv.PROD;try{if(!E)throw new Error(`无账号信息,可使用指令 ${constants_1.CLI_COMMAND_NAME} login 登录`);if(a)return await runNoBuild({isDebug:g,appId:o,env:m,input:t,token:E,copy:i,action:c,sdkEnv:I,autoOpenDevtools:l,puppeteerPath:p.get(constants_1.StoreKey.PUPPETEER_PATH)}),void(0,utils_1.goldlog)(_.SUCCESS,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const e=await getAppInfo(o);logger.debug("appInfo",e);const{latestVersion:n,relateGamePluginId:d}=e,P=g?state_1.EProcessStateName.MINIGAME_DO_DEBUG:state_1.EProcessStateName.MINIGAME_DO_PREVIEW;u.setState(P,{latestVersion:n,cloud:s,input:t});const C=await(0,utils_1.getMiniGameInfo)(t);logger.debug("gameInfo",C);const w=await(0,renderMode_1.setHighPerformanceMode)({appId:o,gameRoot:t,env:I,userSelectRenderMode:r});if(logger.debug("highPerformanceMode",w),g&&!w)throw new Error("普通模式暂不支持生成调试二维码,请在 game.json 中开启高性能模式(highPerformanceMode: true)后重试");let U;if(C.plugins){if(!d)throw(0,utils_1.goldlog)(_.USE_GAME_PLUGIN_ERROR,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),new Error("检测到项目引入了游戏引擎插件,目前小游戏不支持,请关闭。(Cocos关闭引擎分离,Laya关闭启用插件)");{(0,utils_1.goldlog)(_.PLUGIN_PACK,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const e=await(0,pack_1.runPack)({input:t,cloud:s,isPlugin:!0,isUpload:!1});(0,utils_1.goldlog)(g?constants_1.DEBUG_LOG.PLUGIN_DEBUG:constants_1.PREVIEW_LOG.PLUGIN_PREVIEW,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const o={appId:d,gameAmrPath:e.amrPath,pluginList:[],isPlugin:!0,input:t,highPerformanceMode:w},{deployVersion:n}=g?await(0,minigame_api_1.debugCloud)(o):await(0,minigame_api_1.previewCloud)(o);U=n,(0,utils_1.goldlog)(_.PLUGIN_FINISH,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command")}}(0,utils_1.goldlog)(_.PACK,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const v=await(0,pack_1.runPack)({input:t,cloud:s,isPlugin:!1,pluginVersion:U,isUpload:!1});logger.success("runPack succeed".bgGreen,v),(0,utils_1.goldlog)(g?constants_1.DEBUG_LOG.DEBUG:constants_1.PREVIEW_LOG.PREVIEW,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.minigame_preview=void 0;const constants_1=require("../../constants"),provider_1=require("../../core/provider"),utils_1=require("../../utils"),state_1=require("../../process/state"),pack_1=require("../../utils/projects/minigame/pack"),renderMode_1=require("../../utils/projects/minigame/renderMode"),qrCodeDecorator_1=require("../../utils/projects/minigame/qrCodeDecorator"),devToolsWaiter_1=require("../../utils/projects/minigame/devToolsWaiter"),minigame_api_1=require("../../utils/apis/minigame_api"),buildCache_1=require("../../utils/projects/minigame/buildCache"),openDevtools_1=require("../../utils/projects/minigame/openDevtools");require("colors");const logger=(0,utils_1.getLogger)("minigame_preview"),getAppInfo=async e=>{const o=(0,provider_1.getProvider)().getRequest();return await o.post("ide/api/appInfo",{appId:e})},minigame_preview=async e=>{const{appId:o,input:t,debug:n,cloud:s,copy:i,renderMode:r,noBuild:a,autoOpenDevtools:l}=e,g=!!n,_=g?constants_1.DEBUG_LOG:constants_1.PREVIEW_LOG,c=g?"调试":"预览";(0,utils_1.goldlog)(_.START,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),logger.debug("入参",e);const d=(0,provider_1.getProvider)(),u=d.getProcessState(),p=d.getCliConfig(),E=p.get(constants_1.StoreKey.TB_TOKEN),m=p.get(constants_1.StoreKey.ENV,constants_1.DEFAULT_ENV),I=m===constants_1.EEnv.DAILY?constants_1.EEnv.DAILY:m===constants_1.EEnv.PREPUB||"pre"===m?constants_1.EEnv.PREPUB:constants_1.EEnv.PROD;try{if(!E)throw new Error(`无账号信息,可使用指令 ${constants_1.CLI_COMMAND_NAME} login 登录`);if(a)return await runNoBuild({isDebug:g,appId:o,env:m,input:t,token:E,copy:i,action:c,sdkEnv:I,autoOpenDevtools:l,puppeteerPath:p.get(constants_1.StoreKey.PUPPETEER_PATH)}),void(0,utils_1.goldlog)(_.SUCCESS,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const e=await getAppInfo(o);logger.debug("appInfo",e);const{latestVersion:n,relateGamePluginId:d}=e,P=g?state_1.EProcessStateName.MINIGAME_DO_DEBUG:state_1.EProcessStateName.MINIGAME_DO_PREVIEW;u.setState(P,{latestVersion:n,cloud:s,input:t});const C=await(0,utils_1.getMiniGameInfo)(t);logger.debug("gameInfo",C);const w=await(0,renderMode_1.setHighPerformanceMode)({appId:o,gameRoot:t,env:I,userSelectRenderMode:r});if(logger.debug("highPerformanceMode",w),g&&!w)throw new Error("普通模式暂不支持生成调试二维码,请在 game.json 中开启高性能模式(highPerformanceMode: true)后重试");let U;if(C.plugins){if(!d)throw(0,utils_1.goldlog)(_.USE_GAME_PLUGIN_ERROR,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),new Error("检测到项目引入了游戏引擎插件,目前小游戏不支持,请关闭。(Cocos关闭引擎分离,Laya关闭启用插件)");{(0,utils_1.goldlog)(_.PLUGIN_PACK,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const e=await(0,pack_1.runPack)({input:t,cloud:s,isPlugin:!0,isUpload:!1});(0,utils_1.goldlog)(g?constants_1.DEBUG_LOG.PLUGIN_DEBUG:constants_1.PREVIEW_LOG.PLUGIN_PREVIEW,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const o={appId:d,gameAmrPath:e.amrPath,pluginList:[],isPlugin:!0,input:t,highPerformanceMode:w},{deployVersion:n}=g?await(0,minigame_api_1.debugCloud)(o):await(0,minigame_api_1.previewCloud)(o);U=n,(0,utils_1.goldlog)(_.PLUGIN_FINISH,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command")}}(0,utils_1.goldlog)(_.PACK,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const v=await(0,pack_1.runPack)({input:t,cloud:s,isPlugin:!1,pluginVersion:U,isUpload:!1});logger.success("runPack succeed".bgGreen,v),(0,utils_1.goldlog)(g?constants_1.DEBUG_LOG.DEBUG:constants_1.PREVIEW_LOG.PREVIEW,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const h={appId:o,gameAmrPath:v.amrPath,pluginList:v.pluginList,input:t,highPerformanceMode:w};if(g){const{qrCode:e,tyroId:n,channelId:s,deployVersion:r,debuggerUrl:a}=await(0,minigame_api_1.debugCloud)(h);(0,buildCache_1.writeDebugCache)(o,m,{qrCodeRaw:e,deployVersion:r,ts:Date.now()});const g=await(0,qrCodeDecorator_1.attachThemisWebDebugParams)(e,s,t,I,E);u.setState(state_1.EProcessStateName.MINIGAME_DEBUG_RESULT,{qrCode:g,tyroId:n,channelId:s,deployVersion:r,debuggerUrl:a}),logger.success(`${c}二维码地址:`,g),logger.debug(`tyroId: ${n}`),logger.debug(`channelId: ${s}`),a&&logger.info(`debuggerUrl: ${a}`),i&&((0,utils_1.clipText)(g),logger.info("已复制调试码到剪贴板")),(0,utils_1.showQrCode)(g),logger.info("请用手机淘宝扫描上方二维码(Ctrl+C 退出)".yellow.bold);const _=await(0,devToolsWaiter_1.waitDevToolsUrl)({userToken:E,channelId:s,input:t,env:I});logger.success("DevTools 地址:",_),l&&(0,openDevtools_1.openDevtoolsInBrowser)(_,p.get(constants_1.StoreKey.PUPPETEER_PATH))}else{const{qrCode:e,deployVersion:t}=await(0,minigame_api_1.previewCloud)(h);(0,buildCache_1.writePreviewCache)(o,m,{qrCode:e,deployVersion:t,ts:Date.now()}),u.setState(state_1.EProcessStateName.MINIGAME_PREVIEW_RESULT,{qrCode:e,deployVersion:t}),logger.success(`${c}二维码地址:`,e),i&&((0,utils_1.clipText)(e),logger.info("已复制预览码到剪贴板")),(0,utils_1.showQrCode)(e)}(0,utils_1.goldlog)(_.SUCCESS,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command")}catch(e){throw(0,utils_1.goldlog)(_.FAIL,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),e}};async function runNoBuild(e){const{isDebug:o,appId:t,env:n,input:s,token:i,copy:r,action:a,sdkEnv:l,autoOpenDevtools:g,puppeteerPath:_}=e;if(o){const e=(0,buildCache_1.readDebugCache)(t,n);if(!e)throw new Error("暂无包体缓存,需要重新构建(去掉 --noBuild 重跑一次完整调试构建)");logger.info(`使用 ${new Date(e.ts).toLocaleString()} 的调试缓存(deployVersion=${e.deployVersion})`);const o=(0,minigame_api_1.genHex16)(),c=(0,minigame_api_1.genHex16)(),d=await(0,qrCodeDecorator_1.attachThemisWebDebugParams)(e.qrCodeRaw,c,s,l,i);logger.success(`${a}二维码地址:`,d),logger.debug(`tyroId: ${o}`),logger.debug(`channelId: ${c}`),r&&((0,utils_1.clipText)(d),logger.info("已复制调试码到剪贴板")),(0,utils_1.showQrCode)(d),logger.info("请用手机淘宝扫描上方二维码(Ctrl+C 退出)".yellow.bold);const u=await(0,devToolsWaiter_1.waitDevToolsUrl)({userToken:i,channelId:c,input:s,env:l});logger.success("DevTools 地址:",u),g&&(0,openDevtools_1.openDevtoolsInBrowser)(u,_)}else{const e=(0,buildCache_1.readPreviewCache)(t,n);if(!e)throw new Error("暂无包体缓存,需要重新构建(去掉 --noBuild 重跑一次完整预览构建)");logger.info(`使用 ${new Date(e.ts).toLocaleString()} 的预览缓存(deployVersion=${e.deployVersion})`),logger.success(`${a}二维码地址:`,e.qrCode),r&&((0,utils_1.clipText)(e.qrCode),logger.info("已复制预览码到剪贴板")),(0,utils_1.showQrCode)(e.qrCode)}}exports.minigame_preview=minigame_preview;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.standard_preview=void 0;const path_1=__importDefault(require("path")),fs_extra_1=__importDefault(require("fs-extra")),utils_1=require("../../utils"),constants_1=require("../../constants"),getProject_1=require("../../utils/projects/standard/getProject"),zipBuilder_1=require("../../utils/projects/standard/zipBuilder");async function getStandardAppBuildTaskId(e){const{appId:t,webAppOssKey:a}=e,i={appId:t,webAppOssKey:a},{taskId:s}=await(0,utils_1.doStandardizedAppBuild)(i);return s}async function do_preview_with_local_build(e){const{appId:t,appJson:a,webAppOssKey:i="",ossKey:s,isWebApp:p=!0,standardizedBuildUrl:r=null,webAppNewAppConfigJSON:d=null,subPackagesConfig:o}=e,l={appId:t,ossKey:s,isWebApp:p,webAppBuildedUrl:r,webAppOssKey:i,webAppConfig:a,subPackages:o,multiSectionAppConfig:d,multiSectionApp:!!d},{deployVersion:u}=await(0,utils_1.pushLocalPreview)(l);return await(0,utils_1.getPreviewInfo)({deployVersion:u,appId:t,webAppBuildedUrl:r})}const logger=(0,utils_1.getLogger)("standard_preview"),standard_preview=async e=>{try{const t=global.demoTarPath;if(!fs_extra_1.default.existsSync(t))
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.standard_preview=void 0;const path_1=__importDefault(require("path")),fs_extra_1=__importDefault(require("fs-extra")),utils_1=require("../../utils"),constants_1=require("../../constants"),getProject_1=require("../../utils/projects/standard/getProject"),zipBuilder_1=require("../../utils/projects/standard/zipBuilder");async function getStandardAppBuildTaskId(e){const{appId:t,webAppOssKey:a}=e,i={appId:t,webAppOssKey:a},{taskId:s}=await(0,utils_1.doStandardizedAppBuild)(i);return s}async function do_preview_with_local_build(e){const{appId:t,appJson:a,webAppOssKey:i="",ossKey:s,isWebApp:p=!0,standardizedBuildUrl:r=null,webAppNewAppConfigJSON:d=null,subPackagesConfig:o}=e,l={appId:t,ossKey:s,isWebApp:p,webAppBuildedUrl:r,webAppOssKey:i,webAppConfig:a,subPackages:o,multiSectionAppConfig:d,multiSectionApp:!!d},{deployVersion:u}=await(0,utils_1.pushLocalPreview)(l);return await(0,utils_1.getPreviewInfo)({deployVersion:u,appId:t,webAppBuildedUrl:r})}const logger=(0,utils_1.getLogger)("standard_preview"),standard_preview=async e=>{try{const t=global.demoTarPath;if(!fs_extra_1.default.existsSync(t))throw new Error("cli 工具 npm 包中的 demo.tar 文件缺失,无法完成后续流程");const{appId:a,input:i,debug:s,type:p,cloud:r,copy:d}=e,o=(0,getProject_1.getBuildProjectPath)(i),l=fs_extra_1.default.realpathSync(path_1.default.join((0,utils_1.getTmpDir)())),u=await fs_extra_1.default.readJson(`${o}/app.json`),n=await(0,utils_1.getAppInfo)(a),_=[".git",".tea",".svn",".vscode"];s&&logger.warn(`${constants_1.SCENE_PLUGIN_TYPE[p]} 在当前环境无真机调试,将跳过此配置`),logger.warn(`${constants_1.SCENE_PLUGIN_TYPE[p]} 在当前环境无本地预览,将默认启用云构建生成预览链接\n`);const c=await(0,zipBuilder_1.doBuildZip)({projectPath:o,bstandardizeBuildType:n?.bstandardizeBuildType,ignoreList:_,buildDistPath:l,logger:logger}),g=await(0,utils_1.uploadFileToOSS)(t),w=await(0,utils_1.uploadFileToOSS)(c),f={filepath:c,appId:a,demoFilePath:t,webAppOssKey:w},b=await getStandardAppBuildTaskId(f),y=await(0,utils_1.get_standardizedApp_cloud_build_info)({taskId:b,logger:logger,...f}),{qrCode:A}=await do_preview_with_local_build({isWebApp:!0,appId:a,appJson:u,webAppOssKey:w,ossKey:g,...y});logger.success("预览地址: ",A),d&&((0,utils_1.clipText)(A),logger.success("已复制预览地址到剪切板"))}catch(e){throw e}};exports.standard_preview=standard_preview;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.commander_upload=commander_upload;const commander_1=__importDefault(require("commander")),cli_table3_1=__importDefault(require("cli-table3")),chalk_1=__importDefault(require("chalk")),utils_1=require("../..//utils"),apis_1=require("../../utils/apis"),constants_1=require("../../constants"),core_1=require("../../core"),state_1=require("../../process/state"),miniapp_upload_1=require("./miniapp_upload"),widget_upload_1=require("./widget_upload"),minigame_upload_1=require("./minigame_upload"),standard_upload_1=require("./standard_upload"),webapp_upload_1=require("./webapp_upload"),logger=(0,utils_1.getLogger)("[upload]");function commander_upload(a=!1){commander_1.default.command("upload").description("上传发布应用").option("-i, --input <input>","应用根目录 mini.project.json或者app.json/package.json的根目录",process.cwd()).option("-a, --appId <appId>","指定应用 appId").option("-t, --type <open_type>",`指定应用类型: ${JSON.stringify(constants_1.SCENE_PLUGIN_SUITE)}`).option("-v, --app-version <version>","指定应用上传版本").option("--renderMode <mode>","(小游戏)渲染模式: highPerformance | normal(默认 highPerformance,显式 normal 关闭)").allowUnknownOption().action((0,apis_1.withCmdTrack)("upload",async a=>{const e=(0,core_1.getProvider)().getProcessState();e.setState(state_1.EProcessStateName.PARSE_ARV,a);const{appId:t,type:_}=e.getState(state_1.EProcessStateName.PARSE_ARV);if(!t)throw new Error("当前路径没有绑定 appId,可以通过 --appId 指定");if(!_||!Object.values(constants_1.SCENE_PLUGIN_SUITE).includes(_)){const a=new cli_table3_1.default({head:[chalk_1.default.magenta("应用类型"),chalk_1.default.red("对应指定的type")],style:{"padding-left":1,"padding-right":1},colWidths:[20,20]});throw a.push([chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.miniapp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小程序)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.widget),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小部件)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.minigame),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.小游戏)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.standardizedApp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.标准化应用)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.isvCMS),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.商家后台应用)],[chalk_1.default.green(constants_1.SCENE_PLUGIN_TYPE.webapp),chalk_1.default.yellow(constants_1.SCENE_PLUGIN_SUITE.配置应用)]),logger.log(a.toString()),new Error("当前路径未指定正确的应用类型 ,可以通过 --type 指定")}switch((0,utils_1.goldlog)("upload",_),_){case constants_1.SCENE_PLUGIN_SUITE.小程序:await(0,miniapp_upload_1.miniapp_upload)(e.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.小部件:await(0,widget_upload_1.widget_upload)(e.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.小游戏:await(0,minigame_upload_1.minigame_upload)(e.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.标准化应用:case constants_1.SCENE_PLUGIN_SUITE.商家后台应用:await(0,standard_upload_1.standard_upload)(e.getState(state_1.EProcessStateName.PARSE_ARV));break;case constants_1.SCENE_PLUGIN_SUITE.配置应用:await(0,webapp_upload_1.webapp_upload)(e.getState(state_1.EProcessStateName.PARSE_ARV))}},a=>({appType:a[0]?.type,appId:a[0]?.appId})))}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.miniapp_upload=void 0;const{minidev:minidev}=eval("require('minidev')"),core_1=require("../../core"),state_1=require("../../process/state"),utils_1=require("../../utils"),runSourcePack=async e=>{const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.miniapp_upload=void 0;const{minidev:minidev}=eval("require('minidev')"),core_1=require("../../core"),state_1=require("../../process/state"),utils_1=require("../../utils"),runSourcePack=async e=>{const t=e.getProcessState(),{input:i}=t.getState(state_1.EProcessStateName.PARSE_ARV);return await minidev.pack({project:i})};async function getUploadResult(e,t){for(let i=0;i<300;i++){const a=await(0,utils_1.queryUploadStatus)(e),o=JSON.parse(decodeURIComponent(a.buildInfo)),r=JSON.parse(o.detail);if(t.info(`第${i+1}次查询中...`),"2"===a.buildStatus)return t.info(r.log),void t.success("上传开放平台成功,","版本号为:",e.buildVersion);if("3"===a.buildStatus)throw t.error(`${a.buildStatus} 构建失败 ${r.log}`),new Error("构建失败");await(0,utils_1.sleep)(3e3)}throw new Error("轮询超时")}const logger=(0,utils_1.getLogger)("miniapp_upload"),miniapp_upload=async e=>{const{appId:t,input:i,debug:a,cloud:o,appVersion:r}=e;let s=await(0,utils_1.getAppInfo)(t),u=r;if(u||(logger.debug(`当前应用版本:${s.latestVersion}`),u=(0,utils_1.autoAddVersion)(s.latestVersion||"0.0.0")),!u)throw new Error("指定 appId 时,需要指定的version");const l=await(0,utils_1.getMiniAppBuildParams)(i,t,"upload"),n=(0,core_1.getProvider)(),{zipFile:p}=await runSourcePack(n),d={appId:t,ossKey:await(0,utils_1.uploadFileToOSS)(p),version:u,mainUrl:l?.mainUrl,filepath:p,pluginList:l?.pluginList,packageName:"dist.amr",extendInfo:l?.extendInfo,extraInfo:l?.extraInfo};logger.debug("uploadParams",d),logger.info("开始上传小程序到开放平台");const{buildVersion:c,buildPackageId:g}=await(0,utils_1.uploadApp)(d);await getUploadResult({appId:t,buildVersion:c,buildPackageId:g},logger)};exports.miniapp_upload=miniapp_upload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.minigame_upload=void 0;const constants_1=require("../../constants"),provider_1=require("../../core/provider"),utils_1=require("../../utils"),state_1=require("../../process/state"),pack_1=require("../../utils/projects/minigame/pack"),renderMode_1=require("../../utils/projects/minigame/renderMode"),minigame_api_1=require("../../utils/apis/minigame_api"),logger=(0,utils_1.getLogger)("minigame_upload"),getAppInfo=async
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.minigame_upload=void 0;const constants_1=require("../../constants"),provider_1=require("../../core/provider"),utils_1=require("../../utils"),state_1=require("../../process/state"),pack_1=require("../../utils/projects/minigame/pack"),renderMode_1=require("../../utils/projects/minigame/renderMode"),minigame_api_1=require("../../utils/apis/minigame_api"),logger=(0,utils_1.getLogger)("minigame_upload"),getAppInfo=async t=>{const e=(0,provider_1.getProvider)().getRequest();return await e.post("ide/api/appInfo",{appId:t})},isValidVersion=t=>"string"==typeof t&&/^\d+\.\d+\.\d+$/.test(t),minigame_upload=async t=>{(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.START,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const{appId:e,input:o,debug:n,cloud:s,appVersion:i,renderMode:a}=t;logger.debug("入参",t);const r=(0,provider_1.getProvider)(),_=r.getProcessState(),g=r.getCliConfig(),u=g.get(constants_1.StoreKey.TB_TOKEN),c=g.get(constants_1.StoreKey.ENV,constants_1.DEFAULT_ENV);try{if(!u)throw new Error(`无账号信息,可使用指令 ${constants_1.CLI_COMMAND_NAME} login 登录`);const o=await getAppInfo(e);logger.debug("appInfo",o);const{latestVersion:n,relateGamePluginId:r}=o;let g=i;if(g||(logger.debug(`当前应用版本:${n}`),g=(0,utils_1.autoAddVersion)(n||"0.0.0")),!g)throw new Error("指定 appId 时,需要指定的version");_.setState(state_1.EProcessStateName.MINIGAME_DO_UPLOAD,{latestVersion:n,targetVersion:g,cloud:s,input:t?.input});const p=await(0,utils_1.getMiniGameInfo)(t?.input);logger.debug("gameInfo",p);const l=c===constants_1.EEnv.DAILY?constants_1.EEnv.DAILY:c===constants_1.EEnv.PREPUB||"pre"===c?constants_1.EEnv.PREPUB:constants_1.EEnv.PROD,d=await(0,renderMode_1.setHighPerformanceMode)({appId:e,gameRoot:t?.input,env:l,userSelectRenderMode:a});let m;if(logger.debug("highPerformanceMode",d),p.plugins){if(!r)throw(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.USE_GAME_PLUGIN_ERROR,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),new Error("检测到项目引入了游戏引擎插件,目前小游戏不支持,请关闭。(Cocos关闭引擎分离,Laya关闭启用插件)");{(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.PLUGIN_PACK,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const e=await(0,pack_1.runPack)({input:t?.input,cloud:s,isPlugin:!0,pluginVersion:g,isUpload:!0});(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.PLUGIN_UPLOAD,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const{deployVersion:o}=await(0,minigame_api_1.upload)({targetVersion:g,appId:r,amrPath:e.amrPath,pluginList:[],highPerformanceMode:d,input:t?.input});m=o,(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.PLUGIN_FINISH,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command")}}(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.PACK,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const E=await(0,pack_1.runPack)({input:t?.input,cloud:s,isPlugin:!1,pluginVersion:m,isUpload:!0});logger.success("runPack succeed".bgGreen,E),(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.UPLOAD,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command");const P=await(0,minigame_api_1.upload)({targetVersion:g,appId:e,amrPath:E.amrPath,pluginList:E.pluginList,highPerformanceMode:d,input:t?.input});if(logger.debug("upload task result",P),!isValidVersion(P?.version))throw new Error("upload 失败: 服务端返回的 version 非法或缺失");return logger.success("upload done".bgGreen,P),(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.SUCCESS,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),{success:!0,version:P.version}}catch(t){throw(0,utils_1.goldlog)(constants_1.UPLOAD_LOG.FAIL,constants_1.SCENE_PLUGIN_SUITE.小游戏,"tbopen-igo.use_command"),t}};function showDebugInfo(t){throw new Error("Function not implemented.")}exports.minigame_upload=minigame_upload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.standard_upload=void 0;const path_1=__importDefault(require("path")),fs_extra_1=__importDefault(require("fs-extra")),getProject_1=require("../../utils/projects/standard/getProject"),utils_1=require("../../utils"),zipBuilder_1=require("../../utils/projects/standard/zipBuilder"),constants_1=require("../../constants");async function getStandardAppBuildTaskId(t){const{appId:e,webAppOssKey:a}=t,i={appId:e,webAppOssKey:a},{taskId:d}=await(0,utils_1.doStandardizedAppBuild)(i);return d}const logger=(0,utils_1.getLogger)("standard_upload"),standard_upload=async t=>{try{const e=global.demoTarPath;if(!fs_extra_1.default.existsSync(e))throw new Error("cli 工具 npm 包中的 demo.tar 文件缺失,无法完成后续流程");const{appId:a,input:i,debug:d,cloud:s,appVersion:r,type:o}=t,p=(0,getProject_1.getBuildProjectPath)(i),l=fs_extra_1.default.realpathSync(path_1.default.join((0,utils_1.getTmpDir)())),u=await fs_extra_1.default.readJson(`${p}/app.json`),n=await(0,utils_1.getAppInfo)(a),_=[".git",".tea",".svn",".vscode"],g=await(0,zipBuilder_1.doBuildZip)({projectPath:p,bstandardizeBuildType:n?.bstandardizeBuildType,ignoreList:_,buildDistPath:l,logger:logger}),c=await(0,utils_1.uploadFileToOSS)(e),f={filepath:g,appId:a,demoFilePath:e,webAppOssKey:await(0,utils_1.uploadFileToOSS)(g)},w=await getStandardAppBuildTaskId(f),b=await(0,utils_1.get_standardizedApp_cloud_build_info)({taskId:w,logger:logger,...f});let P=r;if(P||(logger.debug(`当前应用版本:${n.latestVersion}`),P=(0,utils_1.autoAddVersion)(n.latestVersion||"0.0.0")),!P)throw new Error("指定 appId 时,需要指定的version");const A={appId:a,ossKey:c,mainUrl:"/index",version:P,extraInfo:JSON.stringify({standardizedAppFilePath:b.standardizedBuildUrl}),webApp:!0,webAppConfig:u,subPackages:b.subPackagesConfig,buildPackageSize:b.standardizedAppBuildPackageSize,multiSectionAppConfig:b.webAppNewAppConfigJSON,multiSectionApp:!!b.webAppNewAppConfigJSON};logger.debug("uploadParams",A),logger.info(`开始上传${constants_1.SCENE_PLUGIN_TYPE[o]}到开放平台`);const{buildVersion:S,buildPackageId:h}=await(0,utils_1.uploadApp)(A);S&&logger.success(`${constants_1.SCENE_PLUGIN_TYPE[o]}上传到开放平台成功,版本号为: ${S}`)}catch(t){throw t}};exports.standard_upload=standard_upload;
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const core_1=require("./core"),pipelines_1=require("./pipelines"),utils_1=require("./utils"),apis_1=require("./utils/apis"),commander_1=__importDefault(require("commander")),state_1=require("./process/state"),constants_1=require("./constants"),pkg=require("../package.json"),logger=(0,utils_1.getLogger)("main");async function main(){process.argv.includes("--showProcess")&&(0,utils_1.showDebug)();const e=(0,core_1.getProvider)();e.setProcessState((0,state_1.createProcessState)()),e.setCliConfig(new core_1.CliConfig),e.setReqeust(new core_1.TbRequest),(0,apis_1.goldlogCli)("launch",(0,apis_1.collectLaunchParams)());const s=new core_1.Pipeline;s.addPipeline(pipelines_1.checkVersion).addPipeline(pipelines_1.showTips).addPipeline(pipelines_1.collect).addPipeline(pipelines_1.registerCommand).addPipeline(pipelines_1.remoteConfig),await s.run(),commander_1.default.usage(`使用帮助,可以通过${constants_1.CLI_COMMAND_NAME} -h 或者 ${constants_1.CLI_COMMAND_NAME} [command] -h 获取`),commander_1.default.version(pkg.version),commander_1.default.
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const core_1=require("./core"),pipelines_1=require("./pipelines"),utils_1=require("./utils"),apis_1=require("./utils/apis"),commander_1=__importDefault(require("commander")),state_1=require("./process/state"),constants_1=require("./constants"),pkg=require("../package.json"),logger=(0,utils_1.getLogger)("main");async function main(){process.argv.includes("--showProcess")&&(0,utils_1.showDebug)();const e=(0,core_1.getProvider)();e.setProcessState((0,state_1.createProcessState)()),e.setCliConfig(new core_1.CliConfig),e.setReqeust(new core_1.TbRequest),(0,apis_1.goldlogCli)("launch",(0,apis_1.collectLaunchParams)());const s=new core_1.Pipeline;s.addPipeline(pipelines_1.checkVersion).addPipeline(pipelines_1.showTips).addPipeline(pipelines_1.collect).addPipeline(pipelines_1.registerCommand).addPipeline(pipelines_1.remoteConfig),await s.run(),commander_1.default.usage(`使用帮助,可以通过${constants_1.CLI_COMMAND_NAME} -h 或者 ${constants_1.CLI_COMMAND_NAME} [command] -h 获取`),commander_1.default.version(pkg.version),await commander_1.default.parseAsync(process.argv)}global.WEBPACK_MODE&&(process.env.__MINICODE_COMPILE_PACKAGE_ROOT__=__dirname),main().catch(e=>{e&&e.message?logger.error("发生错误:",e.message):logger.error("发生错误:",String(e)),logger.debug("错误详情:",e),logger.warn("执行命令时携带 --showProcess 可显示更多日志"),process.exitCode=1});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.remoteConfig=remoteConfig;const superagent_1=__importDefault(require("superagent")),constants_1=require("../constants"),logger_1=require("../utils/logger"),logger=(0,logger_1.getLogger)("remoteConfig");async function remoteConfig(){const e=await superagent_1.default.get(`https://hudong.alicdn.com/api/data/v2/9de69e8aa0f747c588e6de67989ff4dc.js?t=${Date.now()}`);if(e&&e.body){const t=e.body;if(!t.toolEnable)throw new Error(`${constants_1.CLI_COMMAND_NAME} 暂停服务`);const o=3===process.argv.length&&["-V","--version"].includes(process.argv[2]);t.tips&&!o&&(logger.log(t.tips),logger.log("\n"))}}
|
package/lib/utils/apis/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,o,r){void 0===r&&(r=o);var a=Object.getOwnPropertyDescriptor(t,o);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,a)}:function(e,t,o,r){void 0===r&&(r=o),e[r]=t[o]}),__exportStar=this&&this.__exportStar||function(e,t){for(var o in e)"default"===o||Object.prototype.hasOwnProperty.call(t,o)||__createBinding(t,e,o)},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.goldlogCli=goldlogCli,exports.collectCommonParams=collectCommonParams,exports.collectLaunchParams=collectLaunchParams,exports.withCmdTrack=withCmdTrack,exports.goldlog=goldlog,exports.getAppInfo=getAppInfo,exports.pushLocalPreview=pushLocalPreview,exports.pushCloudPreview=pushCloudPreview,exports.getPreviewInfo=getPreviewInfo,exports.uploadApp=uploadApp,exports.uploadFileToOSS=uploadFileToOSS,exports.queryUploadStatus=queryUploadStatus,exports.submitGameCloudBuild=submitGameCloudBuild,exports.getGameCloudBuildStatus=getGameCloudBuildStatus;const request_1=__importDefault(require("request"));require("colors");const constants_1=require("../../constants"),core_1=require("../../core"),logger_1=require("../logger"),logger=(0,logger_1.getLogger)("[api]"),goldlogLogger=(0,logger_1.getLogger)("[goldlog]"),GOLDLOG_TAG="[goldlog]".cyan,pkg=require("../../../package.json"),NONE="(none)",ANON="anonymous",CHANNEL=String(pkg.name).startsWith("@ali/")?"inner":"public";function goldlogCli(e,t={}){try{const o={};for(const[e,r]of Object.entries(t))o[e]=null==r||""===r?NONE:r;o.t=Date.now();const r=Object.entries(o).map(([e,t])=>`${e}=${encodeURIComponent(String(t))}`).join("&");goldlogLogger.debug(GOLDLOG_TAG,`上报 tbopen.cli.${e}`,o),(0,request_1.default)(`https://gm.mmstat.com/tbopen.cli.${e}?${r}`)}catch(e){}}function collectCommonParams(){const e=(0,core_1.getProvider)().getCliConfig()?.get(constants_1.StoreKey.NICK);return{cliVer:pkg.version,channel:CHANNEL,nick:e||ANON}}function collectLaunchParams(){return{...collectCommonParams(),nodeVer:process.version,platform:process.platform,arch:process.arch,cmd:process.argv[2]||NONE}}function withCmdTrack(e,t,o){return async(...r)=>{const a=o
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,o,r){void 0===r&&(r=o);var a=Object.getOwnPropertyDescriptor(t,o);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[o]}}),Object.defineProperty(e,r,a)}:function(e,t,o,r){void 0===r&&(r=o),e[r]=t[o]}),__exportStar=this&&this.__exportStar||function(e,t){for(var o in e)"default"===o||Object.prototype.hasOwnProperty.call(t,o)||__createBinding(t,e,o)},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.goldlogCli=goldlogCli,exports.collectCommonParams=collectCommonParams,exports.collectLaunchParams=collectLaunchParams,exports.withCmdTrack=withCmdTrack,exports.goldlog=goldlog,exports.getAppInfo=getAppInfo,exports.pushLocalPreview=pushLocalPreview,exports.pushCloudPreview=pushCloudPreview,exports.getPreviewInfo=getPreviewInfo,exports.uploadApp=uploadApp,exports.uploadFileToOSS=uploadFileToOSS,exports.queryUploadStatus=queryUploadStatus,exports.submitGameCloudBuild=submitGameCloudBuild,exports.getGameCloudBuildStatus=getGameCloudBuildStatus;const request_1=__importDefault(require("request"));require("colors");const constants_1=require("../../constants"),core_1=require("../../core"),logger_1=require("../logger"),logger=(0,logger_1.getLogger)("[api]"),goldlogLogger=(0,logger_1.getLogger)("[goldlog]"),GOLDLOG_TAG="[goldlog]".cyan,pkg=require("../../../package.json"),NONE="(none)",ANON="anonymous",CHANNEL=String(pkg.name).startsWith("@ali/")?"inner":"public";function goldlogCli(e,t={}){try{const o={};for(const[e,r]of Object.entries(t))o[e]=null==r||""===r?NONE:r;o.t=Date.now();const r=Object.entries(o).map(([e,t])=>`${e}=${encodeURIComponent(String(t))}`).join("&");goldlogLogger.debug(GOLDLOG_TAG,`上报 tbopen.cli.${e}`,o),(0,request_1.default)(`https://gm.mmstat.com/tbopen.cli.${e}?${r}`)}catch(e){}}function collectCommonParams(){const e=(0,core_1.getProvider)().getCliConfig()?.get(constants_1.StoreKey.NICK);return{cliVer:pkg.version,channel:CHANNEL,nick:e||ANON}}function collectLaunchParams(){return{...collectCommonParams(),nodeVer:process.version,platform:process.platform,arch:process.arch,cmd:process.argv[2]||NONE}}function withCmdTrack(e,t,o){return async(...r)=>{const a=o?.(r),n=a?.appType||NONE,s=a?{appId:a.appId||NONE}:{},i=Date.now();goldlogCli(e,{...collectCommonParams(),...s,status:"start",appType:n,durationMs:0,errMsg:NONE,errStage:NONE});try{const o=await t(...r);return goldlogCli(e,{...collectCommonParams(),...s,status:"success",appType:n,durationMs:Date.now()-i,errMsg:NONE,errStage:NONE}),o}catch(t){throw goldlogCli(e,{...collectCommonParams(),...s,status:"fail",appType:n,durationMs:Date.now()-i,errMsg:String(t?.message||t).slice(0,200),errStage:t?.errStage||"unknown"}),t}}}function goldlog(e,t,o="tbopen-data.use_command"){try{const r=(0,core_1.getProvider)().getCliConfig(),a={action:e,app_type:t,nick:encodeURIComponent(r.get("nick"))},n=`https://gm.mmstat.com/tbopen.${o}?${Object.keys(a).map(e=>`${e}=${a[e||""]}`).join("&")}&t=${Date.now()}`;(0,request_1.default)(n)}catch(e){console.log("goldlog 埋点失败"+e.message)}}async function getAppInfo(e){const t=(0,core_1.getProvider)().getRequest();return await t.post("ide/api/appInfo",{appId:e})}async function pushLocalPreview(e){const t=(0,core_1.getProvider)().getRequest();return{deployVersion:(await t.post("ide/api/upload/previewPackage",e)).deployVersion}}async function pushCloudPreview(e){const t=(0,core_1.getProvider)().getRequest();return{deployVersion:(await t.post("ide/api/upload/cloudBuiltPackage",e)).deployVersion}}async function getPreviewInfo(e){const t=(0,core_1.getProvider)().getRequest();return await t.post("ide/api/getDeployVersionInfo",e)}async function uploadApp(e){const t=(0,core_1.getProvider)().getRequest();try{return await t.post("ide/api/upload/versionPackage",e)}catch(e){throw logger.error("上传失败,请先确认是否指定了正确的应用"),logger.error(e),e}}async function uploadFileToOSS(e){const t=(0,core_1.getProvider)(),o=t.getRequest(),r=t.getCliConfig().get(constants_1.StoreKey.ENV,constants_1.DEFAULT_ENV);let a=await o.post("ide/api/upload/getOssUploadConfig",{}),{host:n}=a;return a.OSSAccessKeyId=a.accessKeyId,a.success_action_status="200",await o.upload(`${["pre","daily"].includes(r)?"http":"https"}://${n}`,e,a),a.key}async function queryUploadStatus(e){const t=(0,core_1.getProvider)().getRequest();return await t.post("ide/api/upload/queryUploadStatus",e)}async function submitGameCloudBuild(e){const t=(0,core_1.getProvider)().getRequest();return await t.post("ide/api/submitCloudBuild",e)}async function getGameCloudBuildStatus(e){const t=(0,core_1.getProvider)().getRequest();return await t.post("ide/api/checkCloudBuildStatus",e)}__exportStar(require("./miniapp_api"),exports),__exportStar(require("./standard_api"),exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAppRuntimeExtraConfig=void 0,exports.doStandardizedAppBuild=doStandardizedAppBuild,exports.getStandardizedAppBuild=getStandardizedAppBuild,exports.get_standardizedApp_cloud_build_info=get_standardizedApp_cloud_build_info;const core_1=require("../../core"),common_1=require("../common");async function doStandardizedAppBuild(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAppRuntimeExtraConfig=void 0,exports.doStandardizedAppBuild=doStandardizedAppBuild,exports.getStandardizedAppBuild=getStandardizedAppBuild,exports.get_standardizedApp_cloud_build_info=get_standardizedApp_cloud_build_info;const core_1=require("../../core"),common_1=require("../common"),logger_1=require("../logger"),logger=(0,logger_1.getLogger)("standard_api");async function doStandardizedAppBuild(e){const t=(0,core_1.getProvider)().getRequest();try{return await t.post("ide/api/submitWebAppBuild",e)}catch(e){logger.error("B端应用提交云构建失败:",e?.message||String(e))}}async function getStandardizedAppBuild(e){const{appId:t,taskId:a}=e,d=(0,core_1.getProvider)().getRequest();try{return await d.post("/ide/api/checkWebAppBuild",e)}catch(e){logger.error("B端应用查询云构建结果失败:",e?.message||String(e))}}const getAppRuntimeExtraConfig=e=>{let t=e;return t=Array.isArray(e)?{tabBar:t}:e,t};async function get_standardizedApp_cloud_build_info(e){const{appId:t,demoFilePath:a,taskId:d,logger:i}=e;i.info(`提交构建成功,taskId ${d},开始轮训构建结果`);for(let e=0;e<200;e++){const e=await getStandardizedAppBuild({appId:t,taskId:d});if((e?.data?.log||e?.data?.logDetail)&&i.info(`[云构建日志] ${e.data.logDetail}`||e.data.log),!(e&&e.isSuccess&&e.data&&1===e.data.status)){if(e&&e.isSuccess&&e.data&&0===e.data.status){let t=null;try{if(e.data.newAppConfigJSON){const a=JSON.parse(e.data.newAppConfigJSON);t=(0,exports.getAppRuntimeExtraConfig)(a)}}catch(t){i.error(`newAppConfigJSON 转换失败: 原始数据 ${e.data.newAppConfigJSON}`)}return i.info("B端应用构建成功"),{filePath:a,standardizedBuildUrl:e.data.cdnURL,subPackagesConfig:e.data.subPackages,webAppNewAppConfigJSON:t||"",standardizedAppBuildPackageSize:e.data.buildPackageSize||"1"}}throw new Error("B端应用云构建失败")}i.info("B端应用构建中..."),await(0,common_1.sleep)(3e3)}}exports.getAppRuntimeExtraConfig=getAppRuntimeExtraConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MiniApp=void 0;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),child_process_1=require("child_process"),lodash_1=require("lodash");class MiniApp{miniappDir;miniProjectJson;appJson;logger;constructor(t,e=console.log){this.miniappDir=t,this.logger=e;const i=path_1.default.join(t,"mini.project.json");if(fs_1.default.existsSync(i)){const t=fs_1.default.readFileSync(i,"utf8");try{this.miniProjectJson=JSON.parse(t)}catch(t){this.miniProjectJson={},
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MiniApp=void 0;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),child_process_1=require("child_process"),lodash_1=require("lodash"),logger_1=require("../../logger"),outputLogger=(0,logger_1.getLogger)("MiniApp");class MiniApp{miniappDir;miniProjectJson;appJson;logger;constructor(t,e=console.log){this.miniappDir=t,this.logger=e;const i=path_1.default.join(t,"mini.project.json");if(fs_1.default.existsSync(i)){const t=fs_1.default.readFileSync(i,"utf8");try{this.miniProjectJson=JSON.parse(t)}catch(t){this.miniProjectJson={},outputLogger.error("failed to parse mini.project.json")}}else this.miniProjectJson={};this.miniProjectJson.cloud&&!this.miniProjectJson.miniprogramRoot&&(this.miniProjectJson.miniprogramRoot="client",fs_1.default.existsSync(path_1.default.join(t,this.miniProjectJson.miniprogramRoot))||(this.miniProjectJson.miniprogramRoot=""));const s=path_1.default.join(t,this.miniProjectJson.miniprogramRoot||"","app.json");if(fs_1.default.existsSync(s)){const t=fs_1.default.readFileSync(s,"utf8");try{this.appJson=JSON.parse(t)}catch(t){outputLogger.error("failed to parse app.json")}}else outputLogger.error("cannot find app.json")}getMiniProjectJson(){return this.miniProjectJson}getAppJson(){return this.appJson}getClientRoot(){return(this.isPluginProject()||this.isCloudProject())&&""===(0,lodash_1.get)(this.miniProjectJson,"miniprogramRoot","")?"client":this.miniProjectJson.miniprogramRoot||"."}getPluginRoot(){return this.isPluginProject()&&""===(0,lodash_1.get)(this.miniProjectJson,"pluginRoot","")?"plugin":this.miniProjectJson.pluginRoot||"."}getClientAbsoluteRoot(){return path_1.default.join(this.miniappDir,this.getClientRoot())}getPluginAbsoluteRoot(){return path_1.default.join(this.miniappDir,this.getPluginRoot())}getMiniProgramRoot(){return this.miniProjectJson.miniprogramRoot||"."}getMainUrl(){return"/index.html#"+this.getFirstPage()}getFirstPage(){return this.appJson.pages&&this.appJson.pages[0]||"pages/index/index"}getShopSchemaStr(){const t=path_1.default.join(this.miniappDir,"schema.json");if(!fs_1.default.existsSync(t))return"";{const e=fs_1.default.readFileSync(t,"utf8");try{return JSON.stringify(JSON.parse(e))}catch(t){return outputLogger.error("failed to parse schema.json"),""}}}getPreloadJson(){const t=path_1.default.join(this.miniappDir,"preload.json");if(!fs_1.default.existsSync(t))return"";{const e=fs_1.default.readFileSync(t,"utf8");try{return JSON.stringify(JSON.parse(e))}catch(t){return outputLogger.error("failed to parse preload.json"),""}}}isTabBarEnable(){const t=this.appJson.tabBar,e=this.getFirstPage();return!(!t||!t.items)&&t.items.filter(t=>t.pagePath===e).length>0}getExtendInfo(){return this.getExtendInfoStr()}getExtendInfoStr(){return JSON.stringify(this.getExtendInfoObj())}getExtendInfoObj(){return{launchParams:{enableTabBar:this.isTabBarEnable()?"YES":"NO",enableJSC:"YES",page:this.getFirstPage(),enableKeepAlive:"YES",enableWK:"YES"}}}isPluginProject(){return"plugin"===(0,lodash_1.get)(this.miniProjectJson,"compileType")}getCompileType(){return(0,lodash_1.get)(this.miniProjectJson,"compileType","mini")}isCloudProject(){return"CLOUDAPP"===(0,lodash_1.get)(this.miniProjectJson,"cloud.type","").toUpperCase()}getBeforePreBuildScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.beforePreBuild")}getPreBuildScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.preBuild")}getBeforeUploadScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.beforeUpload")}getAfterPreBuildScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.afterPreBuild")}getBeforeInstallProdScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.beforeInstallProd")}getAfterInstallProdScript(){return(0,lodash_1.get)(this.miniProjectJson,"scripts.afterInstallProd")}async getBuildParams(t={}){const{appId:e=""}=t,i=this.getExtendInfoObj(),s=this.getPreloadJson();s&&(i.launchParams.preloadConfig=s);const n={mainUrl:this.getMainUrl(),extraInfo:this.getExtraInfoStr(e),pluginList:JSON.stringify(this.getPluginList()),clientType:"taobao",appType:"tinyApp",extendInfo:JSON.stringify(i),projectJson:JSON.stringify(this.miniProjectJson)};this.miniProjectJson.compileType&&(n.compileType=this.miniProjectJson.compileType);const o=this.getShopSchemaStr();return o&&(n.shopSchema=o,n.formSchema=o),n}getExtraInfoStr(t){return JSON.stringify(this.getExtraInfoObj(t))}getExtraInfoObj(t){return{appId:t,doneCommand:this.getSubPackages().length>0?"buildpacksub":"pack",client:"IDE",fileFormat:"tar",scene:"DEBUG",syncToOffline:!1,tinycliName:"tiny-cli",tinycliVersion:"6.3.2",adaptorName:"taobao"}}getCloudBuildParams(t){const e=[];e.push("--color"),e.push("--limitation"),e.push("false"),e.push("--allowPrecompile"),e.push("--appId"),e.push(t.toString()),this.isPluginProject()&&(e.push("--compileType"),e.push("plugin")),e.push("--enableDistFileMinify"),e.push("--sourceMap"),e.push("false"),e.push("--ADAPTOR_NAME"),e.push("taobao"),this.isPluginProject()&&(e.push("--pluginId"),e.push(t.toString())),e.push("--injectCode"),e.push("{}"),e.push("--preview"),e.push("--scriptName"),this.getSubPackages().length>0?e.push("buildpacksub"):e.push("buildpack");try{!0===this.getMiniProjectJson().enableAppxNg&&(e.push("--project-config-json"),e.push(encodeURIComponent(JSON.stringify({enableAppxNg:!0}))))}catch(t){console.log("获取enableAppxNg报错: ",t.message)}return e}getCloudBuildPluginParams(){return!0===this.getMiniProjectJson().enableAppxNg?[{key:"bugmeng",options:{tinybugme:!0,ignoreWorker:!1,preview:!0}}]:[{key:"tinybugme"}]}getPluginList(){return this.appJson&&this.appJson.plugins?Object.keys(this.appJson.plugins).map(t=>{const e=this.appJson.plugins[t];return{pluginId:e.provider,pluginVersion:e.version}}).filter(t=>"{{currentPluginId}}"!==t.pluginId):[]}getSubPackages(){return this.appJson&&this.appJson.subPackages?this.appJson.subPackages:[]}npmInstall(t=!0){if(fs_1.default.existsSync(path_1.default.join(this.miniappDir,"package.json")))try{(0,child_process_1.execSync)("npm install --registry=https://registry.anpm.alibaba-inc.com "+(t?"--production":""),{cwd:this.miniappDir,encoding:"utf8"})}catch(t){this.logger("failed to install npm dependencies")}else this.logger("仓库中不存在package.json, 跳过安装依赖")}}exports.MiniApp=MiniApp;
|