UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

107 lines (93 loc) 6.36 kB
"use strict";var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");_Object$defineProperty(exports, "__esModule", { value: true });exports.bundleRouter = bundleRouter;exports.debugRouter = debugRouter;exports.indexRouter = indexRouter;exports.poststdbgRouter = poststdbgRouter;exports.startDebug = startDebug;var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify")); var _path = _interopRequireDefault(require("path")); var _child_process = require("child_process"); var _qrImage = _interopRequireDefault(require("qr-image")); var _openBrowser = require("./openBrowser.js"); var _index = require("../cli-shared-utils/index.js"); var _recordClient = require("./record-client.js"); function indexRouter(context) { // 默认展示二维码 var image = _qrImage["default"].image("http://".concat(context.host), { size: 9, type: 'png', ec_level: 'H' }); context.type = 'image/png'; context.body = image; } function debugRouter(context) { var str = context.request.querystring; var ip = str.replace('ip=', ''); var url = "chrome-devtools://devtools/bundled/inspector.html?v8only=true&ws=".concat(ip, ":5086/00010002-0003-4004-8005-000600070008"); context.response.type = 'html'; context.response.body = "<p>\u8BF7\u590D\u5236\u4EE5\u4E0B\u5730\u5740\u5230\u5730\u5740\u680F\u91CC\u9762\u8BBF\u95EE\uFF08\u67D0\u4E9B\u9AD8\u7248\u672Cchorme\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5730\u5740\u8BBF\u95EE\u4E0D\u4E86\uFF0C\u53BB\u6389\u201Cchorme-\u201D\u5C1D\u8BD5\u4E0B\uFF09</p><p>".concat(url, "</p>"); } function poststdbgRouter(context) { var params = (0, _recordClient.getDebugInfoFromRequest)(context.request); var _context$request$body = context.request.body,ip = _context$request$body.ip,_context$request$body2 = _context$request$body.isPreviewDebug,isPreviewDebug = _context$request$body2 === void 0 ? false : _context$request$body2,_context$request$body3 = _context$request$body.supportNewDev,supportNewDev = _context$request$body3 === void 0 ? false : _context$request$body3; var host = context.request.host; var portRegex = /:(\d+)/; var match = host.match(portRegex); var port = match ? match[1] : ''; if (port) { host = '127.0.0.1:' + port; } // ADB调试模式 if (params.linkMode === _recordClient.LINK_MODE.ADB) { startDebug(context, params, supportNewDev); return; } (0, _index.info)((0, _stringify["default"])(params)); // 使用本地的devtool来打开调试页面 var url = "http://".concat(host, "/front_end/inspector.html?ws=").concat(ip, ":").concat(params.devicePort, "/inspector&remoteFrontend=true&dockSide=undocked&panel=console"); if (isPreviewDebug) { (0, _openBrowser.openBrowser)(url); } else { // OPPO、荣耀都是cocos的调试方式,可以直接使用chrome devtool来调试 // OPPO是 ${ip}:12348 url = "devtools://devtools/bundled/inspector.html?v8only=true&ws=".concat(ip, ":5086/00010002-0003-4004-8005-000600070008"); // 荣耀是 ${ip}:5086 // 小米是chrome://inspect/#devices的调试方式 (0, _openBrowser.openBrowser)(url); } } /** * 适配支持调试器的开始调试请求, 自动打开chrome进程 */function startDebug(_x, _x2, _x3) {return _startDebug.apply(this, arguments);}function _startDebug() {_startDebug = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(context, params, supportNewDev) {var sn, linkMode, devicePort, serverPort, _yield$context$adbDeb, localReversePort, err, newDevUrl;return _regenerator["default"].wrap(function _callee$(_context) {while (1) switch (_context.prev = _context.next) {case 0: context.status = 200; sn = params.sn, linkMode = params.linkMode, devicePort = params.devicePort; serverPort = devicePort; // ADB调试模式 if (!(linkMode === _recordClient.LINK_MODE.ADB)) {_context.next = 13;break;}_context.next = 6;return ( context.adbDebugger.forwardForWsChannel(sn, devicePort));case 6:_yield$context$adbDeb = _context.sent;localReversePort = _yield$context$adbDeb.localReversePort;err = _yield$context$adbDeb.err;if (! err) {_context.next = 12;break;} console.error("startDebug(): adb forward \u7AEF\u53E3\u6620\u5C04\u5931\u8D25: ".concat(err.message));return _context.abrupt("return");case 12: serverPort = localReversePort;case 13: // 生成调试url,并且向页面输出调试APP信息 newDevUrl = "http://127.0.0.1:".concat(serverPort, "/front_end/inspector.html?ws=127.0.0.1:").concat(devicePort, "/inspector&remoteFrontend=true&dockSide=undocked&panel=console"); (0, _openBrowser.openBrowser)(newDevUrl);case 15:case "end":return _context.stop();}}, _callee);}));return _startDebug.apply(this, arguments);} function getProjectName() { var str = _index.fs.readFileSync(_path["default"].resolve(_index.projectPath, './src/manifest.json'), 'utf8'); return JSON.parse(str)["package"]; } function bundleRouter(context) { var projectName = getProjectName(); var projectDist = _path["default"].join(_index.projectPath, "dist"); var files = _index.fs.readdirSync(projectDist); var rpkFiles = files.map(function (file) { if (file.endsWith('.rpk')) { var fileName = file.split('.rpk')[0]; if (fileName.includes(projectName)) { return file; } } }); var projectRpk = _path["default"].join(projectDist, "".concat(projectName, ".rpk")); if (rpkFiles && rpkFiles.length > 0) { projectRpk = _path["default"].resolve(projectDist, rpkFiles[0]); } if (_index.fs.existsSync(projectRpk)) { context.body = _index.fs.createReadStream(projectRpk); context.set('Content-Type', 'text/plain'); } else { (0, _index.info)("".concat(projectDist, "\u76EE\u5F55\u4E0B\u6CA1\u6709rpk\u6587\u4EF6\uFF0C\u73B0\u5728\u8FD0\u884Cnpm run build\u547D\u4EE4\u8FDB\u884C\u6253\u5305")); (0, _child_process.execSync)('qg build', { cwd: _index.projectPath, stdio: 'inherit' }); } }