UNPKG

dragonbones-runtime

Version:

the tools to build dragonbones file for diffrent framework

295 lines (294 loc) 11.9 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); var file = require("../lib/FileUtil"); var _utils = require("../lib/utils"); var _path = require("path"); var cp = require("child_process"); var utils_1 = require("../lib/utils"); var EgretProjectData = (function () { function EgretProjectData() { this.egretProperties = { modules: [] }; this.projectRoot = ""; } EgretProjectData.prototype.init = function (projectRoot) { this.projectRoot = projectRoot; this.reload(); }; EgretProjectData.prototype.invalid = function (report) { var result = !this.egretProperties.modules || this.egretProperties.modules.length == 0; if (result && report) { console.log(_utils.tr(1602)); //缺少egretProperties.json } return result; }; EgretProjectData.prototype.hasEUI = function () { return this.egretProperties.modules.some(function (m) { return m.name == "eui"; }); }; EgretProjectData.prototype.reload = function () { this.egretProperties = { modules: [] }; var egretPropertiesPath = this.getFilePath("egretProperties.json"); if (file.exists(egretPropertiesPath)) { this.egretProperties = JSON.parse(file.read(egretPropertiesPath)); var useGUIorEUI = 0; for (var _i = 0, _a = this.egretProperties.modules; _i < _a.length; _i++) { var m = _a[_i]; //兼容小写 if (m.name == "dragonbones") { m.name = "dragonBones"; } if (m.name == "gui" || m.name == "eui") { useGUIorEUI++; } } if (useGUIorEUI >= 2) { globals.log2(8); process.exit(1); } } }; /** * 获取项目的根路径 */ EgretProjectData.prototype.getProjectRoot = function () { return this.projectRoot; }; EgretProjectData.prototype.getFilePath = function (fileName) { return _path.resolve(this.getProjectRoot(), fileName); }; /** * 获取项目使用的egret版本号 */ EgretProjectData.prototype.getVersion = function () { return this.egretProperties.egret_version; }; EgretProjectData.prototype.getReleaseRoot = function () { var p = "bin-release"; if (globals.hasKeys(this.egretProperties, ["publish", "path"])) { p = this.egretProperties.publish.path; } return file.getAbsolutePath(p); //return file.joinPath(egret.args.projectDir, p); }; EgretProjectData.prototype.getVersionCode = function (runtime) { if (globals.hasKeys(this.egretProperties, ["publish", "baseVersion"])) { return this.egretProperties["publish"]["baseVersion"]; } return 1; }; EgretProjectData.prototype.getIgnorePath = function () { if (globals.hasKeys(this.egretProperties, [egret.args.target, "path_ignore"])) { return this.egretProperties[egret.args.target]["path_ignore"]; } return []; }; EgretProjectData.prototype.getExmlRoots = function () { if (globals.hasKeys(this.egretProperties, ["eui", "exmlRoot"])) { var result = this.egretProperties.eui.exmlRoot; if (typeof result == "string") { return [_path.join(egret.args.projectDir, result)]; } else { var temp = this.egretProperties.eui.exmlRoot; return temp.reduce(function (previousValue, currentValue) { previousValue.push(_path.join(egret.args.projectDir, currentValue)); return previousValue; }, []); } } return [egret.args.projectDir]; }; EgretProjectData.prototype.getThemes = function () { if (globals.hasKeys(this.egretProperties, ["eui", "themes"])) { return this.egretProperties.eui.themes; } return null; }; EgretProjectData.prototype.getExmlPublishPolicy = function () { if (globals.hasKeys(this.egretProperties, ["eui", "exmlPublishPolicy"])) { return this.egretProperties.eui.exmlPublishPolicy; } return "content"; }; EgretProjectData.prototype.getCopyExmlList = function () { if (globals.hasKeys(this.egretProperties, [egret.args.target, "copyExmlList"])) { return this.egretProperties[egret.args.target]["copyExmlList"]; } return []; }; EgretProjectData.prototype.getNativePath = function (platform) { if (globals.hasKeys(this.egretProperties, ["native", platform + "_path"])) { return _path.resolve(this.getProjectRoot(), this.egretProperties.native[platform + "_path"]); } return null; }; EgretProjectData.prototype.getModulePath2 = function (p) { if (!p) { var engineVersion = this.egretProperties.engineVersion; if (engineVersion) { var versions = this.getEgretVersionInfos(); for (var _i = 0, versions_1 = versions; _i < versions_1.length; _i++) { var version_1 = versions_1[_i]; if (version_1.version == engineVersion) { return version_1.path; } } console.error("\u627E\u4E0D\u5230\u7248\u672C" + engineVersion); return egret.root; } return egret.root; } var egretLibs = getAppDataEnginesRootPath(); var keyword = '${EGRET_APP_DATA}'; if (p.indexOf(keyword) >= 0) { p = p.replace(keyword, egretLibs); } var keyword2 = '${EGRET_DEFAULT}'; if (p.indexOf(keyword2) >= 0) { p = p.replace(keyword2, egret.root); } return p; }; EgretProjectData.prototype.getModulePath = function (m) { var modulePath = this.getModulePath2(m.path); modulePath = file.getAbsolutePath(modulePath); var name = m.name; if (this.isWasmProject()) { if (name == "egret" || name == "eui" || name == "dragonBones" || name == "game") { name += "-wasm"; } } var searchPaths = [ _path.join(modulePath, "bin", name), _path.join(modulePath, "bin"), _path.join(modulePath, "build", name), modulePath ]; if (this.isWasmProject()) { searchPaths.unshift(_path.join(modulePath, "bin-wasm")); searchPaths.unshift(_path.join(modulePath, "bin-wasm", name)); } var dir = file.searchPath(searchPaths); if (!dir) { globals.exit(1050, modulePath); } return dir; }; EgretProjectData.prototype.getLibraryFolder = function () { return this.getFilePath('libs/modules'); }; EgretProjectData.prototype.getEgretVersionInfos = function () { var stdout = cp.execSync("egret versions", { encoding: "utf-8" }); var versions = stdout.toString().split("\n"); // //删除最后一行空格 versions = versions.slice(0, versions.length - 1); var result = versions.map(function (versionStr) { var version; var path; var versionRegExp = /(\d+\.){2}\d+(\.\d+)?/g; var matchResultVersion = versionStr.match(versionRegExp); if (matchResultVersion && matchResultVersion.length > 0) { version = matchResultVersion[0]; } var pathRegExp = /(?:[a-zA-Z]\:)?(?:[\\|\/][^\\|\/]+)+[\\|\/]?/g; var matchResult2 = versionStr.match(pathRegExp); if (matchResult2 && matchResult2.length > 0) { path = _path.join(matchResult2[0], '.'); } return { version: version, path: path }; }); return result; }; EgretProjectData.prototype.getModulesConfig = function (platform) { var _this = this; var result = this.egretProperties.modules.map(function (m) { var name = m.name; var sourceDir = _this.getModulePath(m); var targetDir = _path.join(_this.getLibraryFolder(), name); var relative = _path.relative(_this.getProjectRoot(), sourceDir); if (relative.indexOf("..") == -1 && !_path.isAbsolute(relative)) { targetDir = sourceDir; } targetDir = file.escapePath(_path.relative(_this.getProjectRoot(), targetDir)) + _path.sep; var source = [ file.joinPath(sourceDir, name + ".js"), file.joinPath(sourceDir, name + "." + platform + ".js") ].filter(file.exists); var target = source.map(function (s) { var debug = file.joinPath(targetDir, _path.basename(s)); var release = file.joinPath(targetDir, _path.basename(s, '.js') + '.min.js'); return { debug: debug, release: release, platform: platform }; }); return { name: name, target: target, sourceDir: sourceDir, targetDir: targetDir }; }); return result; }; EgretProjectData.prototype.isWasmProject = function () { if (globals.hasKeys(this.egretProperties, ["wasm"])) { return true; } return false; }; EgretProjectData.prototype.getResources = function () { if (globals.hasKeys(this.egretProperties, ["resources"])) { return this.egretProperties["resources"]; } return ["resource"]; }; Object.defineProperty(EgretProjectData.prototype, "useTemplate", { get: function () { return this.egretProperties.template != undefined; }, enumerable: true, configurable: true }); EgretProjectData.prototype.hasModule = function (name) { var result = false; this.egretProperties.modules.forEach(function (module) { if (module.name == name || module.name == name) { result = true; } }); return result; }; return EgretProjectData; }()); __decorate([ utils_1.cache ], EgretProjectData.prototype, "getEgretVersionInfos", null); __decorate([ _utils.cache ], EgretProjectData.prototype, "getModulesConfig", null); exports.EgretProjectData = EgretProjectData; exports.data = new EgretProjectData(); function getAppDataEnginesRootPath() { var path; switch (process.platform) { case 'darwin': var home = process.env.HOME || ("/Users/" + (process.env.NAME || process.env.LOGNAME)); if (!home) return null; path = home + "/Library/Application Support/Egret/engine/"; break; case 'win32': var appdata = process.env.AppData || process.env.USERPROFILE + "/AppData/Roaming/"; path = file.escapePath(appdata + "/Egret/engine/"); break; default: ; } if (file.exists(path)) return path; return null; }