uni-plugin-light
Version:
uni-app相关插件、loader及webpack基础配置
1,252 lines (1,216 loc) • 120 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var tComm = require('t-comm');
var fs = require('fs');
var path = require('path');
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var fs__namespace = /*#__PURE__*/_interopNamespace(fs);
var path__namespace = /*#__PURE__*/_interopNamespace(path);
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function () {
var self = this,
args = arguments;
return new Promise(function (resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _typeof$1(o) {
"@babel/helpers - typeof";
return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof$1(o);
}
function _toPrimitive(input, hint) {
if (_typeof$1(input) !== "object" || input === null) return input;
var prim = input[Symbol.toPrimitive];
if (prim !== undefined) {
var res = prim.call(input, hint || "default");
if (_typeof$1(res) !== "object") return res;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return (hint === "string" ? String : Number)(input);
}
function _toPropertyKey(arg) {
var key = _toPrimitive(arg, "string");
return _typeof$1(key) === "symbol" ? key : String(key);
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
Object.defineProperty(Constructor, "prototype", {
writable: false
});
return Constructor;
}
function _defineProperty(obj, key, value) {
key = _toPropertyKey(key);
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var regeneratorRuntimeExports = {};
var regeneratorRuntime$1 = {
get exports(){ return regeneratorRuntimeExports; },
set exports(v){ regeneratorRuntimeExports = v; },
};
var _typeofExports = {};
var _typeof = {
get exports(){ return _typeofExports; },
set exports(v){ _typeofExports = v; },
};
(function (module) {
function _typeof(o) {
"@babel/helpers - typeof";
return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
}
module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (_typeof));
(function (module) {
var _typeof = _typeofExports["default"];
function _regeneratorRuntime() {
module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
return e;
}, module.exports.__esModule = true, module.exports["default"] = module.exports;
var t,
e = {},
r = Object.prototype,
n = r.hasOwnProperty,
o = Object.defineProperty || function (t, e, r) {
t[e] = r.value;
},
i = "function" == typeof Symbol ? Symbol : {},
a = i.iterator || "@@iterator",
c = i.asyncIterator || "@@asyncIterator",
u = i.toStringTag || "@@toStringTag";
function define(t, e, r) {
return Object.defineProperty(t, e, {
value: r,
enumerable: !0,
configurable: !0,
writable: !0
}), t[e];
}
try {
define({}, "");
} catch (t) {
define = function define(t, e, r) {
return t[e] = r;
};
}
function wrap(t, e, r, n) {
var i = e && e.prototype instanceof Generator ? e : Generator,
a = Object.create(i.prototype),
c = new Context(n || []);
return o(a, "_invoke", {
value: makeInvokeMethod(t, r, c)
}), a;
}
function tryCatch(t, e, r) {
try {
return {
type: "normal",
arg: t.call(e, r)
};
} catch (t) {
return {
type: "throw",
arg: t
};
}
}
e.wrap = wrap;
var h = "suspendedStart",
l = "suspendedYield",
f = "executing",
s = "completed",
y = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
var p = {};
define(p, a, function () {
return this;
});
var d = Object.getPrototypeOf,
v = d && d(d(values([])));
v && v !== r && n.call(v, a) && (p = v);
var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
function defineIteratorMethods(t) {
["next", "throw", "return"].forEach(function (e) {
define(t, e, function (t) {
return this._invoke(e, t);
});
});
}
function AsyncIterator(t, e) {
function invoke(r, o, i, a) {
var c = tryCatch(t[r], t, o);
if ("throw" !== c.type) {
var u = c.arg,
h = u.value;
return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
invoke("next", t, i, a);
}, function (t) {
invoke("throw", t, i, a);
}) : e.resolve(h).then(function (t) {
u.value = t, i(u);
}, function (t) {
return invoke("throw", t, i, a);
});
}
a(c.arg);
}
var r;
o(this, "_invoke", {
value: function value(t, n) {
function callInvokeWithMethodAndArg() {
return new e(function (e, r) {
invoke(t, n, e, r);
});
}
return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
}
});
}
function makeInvokeMethod(e, r, n) {
var o = h;
return function (i, a) {
if (o === f) throw new Error("Generator is already running");
if (o === s) {
if ("throw" === i) throw a;
return {
value: t,
done: !0
};
}
for (n.method = i, n.arg = a;;) {
var c = n.delegate;
if (c) {
var u = maybeInvokeDelegate(c, n);
if (u) {
if (u === y) continue;
return u;
}
}
if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
if (o === h) throw o = s, n.arg;
n.dispatchException(n.arg);
} else "return" === n.method && n.abrupt("return", n.arg);
o = f;
var p = tryCatch(e, r, n);
if ("normal" === p.type) {
if (o = n.done ? s : l, p.arg === y) continue;
return {
value: p.arg,
done: n.done
};
}
"throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
}
};
}
function maybeInvokeDelegate(e, r) {
var n = r.method,
o = e.iterator[n];
if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
var i = tryCatch(o, e.iterator, r.arg);
if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
var a = i.arg;
return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
}
function pushTryEntry(t) {
var e = {
tryLoc: t[0]
};
1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
}
function resetTryEntry(t) {
var e = t.completion || {};
e.type = "normal", delete e.arg, t.completion = e;
}
function Context(t) {
this.tryEntries = [{
tryLoc: "root"
}], t.forEach(pushTryEntry, this), this.reset(!0);
}
function values(e) {
if (e || "" === e) {
var r = e[a];
if (r) return r.call(e);
if ("function" == typeof e.next) return e;
if (!isNaN(e.length)) {
var o = -1,
i = function next() {
for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
return next.value = t, next.done = !0, next;
};
return i.next = i;
}
}
throw new TypeError(_typeof(e) + " is not iterable");
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
value: GeneratorFunctionPrototype,
configurable: !0
}), o(GeneratorFunctionPrototype, "constructor", {
value: GeneratorFunction,
configurable: !0
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
var e = "function" == typeof t && t.constructor;
return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
}, e.mark = function (t) {
return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
}, e.awrap = function (t) {
return {
__await: t
};
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
return this;
}), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
void 0 === i && (i = Promise);
var a = new AsyncIterator(wrap(t, r, n, o), i);
return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
return t.done ? t.value : a.next();
});
}, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
return this;
}), define(g, "toString", function () {
return "[object Generator]";
}), e.keys = function (t) {
var e = Object(t),
r = [];
for (var n in e) r.push(n);
return r.reverse(), function next() {
for (; r.length;) {
var t = r.pop();
if (t in e) return next.value = t, next.done = !1, next;
}
return next.done = !0, next;
};
}, e.values = values, Context.prototype = {
constructor: Context,
reset: function reset(e) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
},
stop: function stop() {
this.done = !0;
var t = this.tryEntries[0].completion;
if ("throw" === t.type) throw t.arg;
return this.rval;
},
dispatchException: function dispatchException(e) {
if (this.done) throw e;
var r = this;
function handle(n, o) {
return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
}
for (var o = this.tryEntries.length - 1; o >= 0; --o) {
var i = this.tryEntries[o],
a = i.completion;
if ("root" === i.tryLoc) return handle("end");
if (i.tryLoc <= this.prev) {
var c = n.call(i, "catchLoc"),
u = n.call(i, "finallyLoc");
if (c && u) {
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
} else if (c) {
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
} else {
if (!u) throw new Error("try statement without catch or finally");
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
}
}
}
},
abrupt: function abrupt(t, e) {
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
var o = this.tryEntries[r];
if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
var i = o;
break;
}
}
i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
var a = i ? i.completion : {};
return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
},
complete: function complete(t, e) {
if ("throw" === t.type) throw t.arg;
return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
},
finish: function finish(t) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var r = this.tryEntries[e];
if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
}
},
"catch": function _catch(t) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var r = this.tryEntries[e];
if (r.tryLoc === t) {
var n = r.completion;
if ("throw" === n.type) {
var o = n.arg;
resetTryEntry(r);
}
return o;
}
}
throw new Error("illegal catch attempt");
},
delegateYield: function delegateYield(e, r, n) {
return this.delegate = {
iterator: values(e),
resultName: r,
nextLoc: n
}, "next" === this.method && (this.arg = t), y;
}
}, e;
}
module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (regeneratorRuntime$1));
// TODO(Babel 8): Remove this file.
var runtime = regeneratorRuntimeExports();
var regenerator = runtime;
// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
try {
regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
if (typeof globalThis === "object") {
globalThis.regeneratorRuntime = runtime;
} else {
Function("r", "regeneratorRuntime = r")(runtime);
}
}
/* eslint-disable @typescript-eslint/no-require-imports */
var ROOT_NAME$1 = 'MAIN';
function saveJsonToLog(content, file) {
var needLog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
if (!needLog) return;
createLogDir();
try {
fs__namespace.writeFile("./log/".concat(file), JSON.stringify(content, null, 2), {
encoding: 'utf-8'
}, function () {});
} catch (err) {}
}
function createLogDir() {
if (!fs__namespace.existsSync('./log')) {
fs__namespace.mkdirSync('./log');
}
}
var normalizePath = function normalizePath(path) {
return tComm.isWindows() ? path.replace(/\\/g, '/') : path;
};
function updateAssetSource(assets, key, _source) {
assets[key] = {
source: function source() {
return _source;
},
size: function size() {
return _source.length;
}
};
}
function removeFirstSlash(key) {
if (key.startsWith('/')) {
return key.slice(1);
}
return key;
}
function sortStringList(list) {
list.sort(function (a, b) {
if (a > b) return 1;
if (a < b) return -1;
return 0;
});
return list;
}
function parseSetDeps(deps) {
return Object.keys(deps).reduce(function (acc, item) {
acc[item] = Array.from(deps[item]);
sortStringList(acc[item]);
return acc;
}, {});
}
function getRelativePath(filePath) {
return path__namespace.relative(process.cwd(), path__namespace.resolve(filePath));
}
function getUniCliCache(key) {
var cache = require('@dcloudio/uni-cli-shared/lib/cache');
if (!key) return cache;
return cache[key];
}
var DepAnalysisPlugin = /*#__PURE__*/function () {
function DepAnalysisPlugin() {
_classCallCheck(this, DepAnalysisPlugin);
_defineProperty(this, "depsMap", void 0);
_defineProperty(this, "reverseDepsMap", void 0);
_defineProperty(this, "pluginName", void 0);
this.depsMap = {};
this.reverseDepsMap = {};
this.pluginName = 'DepAnalysisPlugin';
createLogDir();
}
_createClass(DepAnalysisPlugin, [{
key: "apply",
value: function apply(compiler) {
var _this = this;
compiler.hooks.normalModuleFactory.tap(this.pluginName, function (nmf) {
nmf.hooks.afterResolve.tap(_this.pluginName, function (result) {
var resourceResolveData = result.resourceResolveData;
var issuer = resourceResolveData.context.issuer,
path = resourceResolveData.path;
// console.log('[DepAnalysisPlugin] issuer', issuer);
// console.log('[DepAnalysisPlugin] path', path);
var parent = issuer ? getRelativePath(issuer) : ROOT_NAME$1;
var child = getRelativePath(path);
if (_this.depsMap[parent]) {
_this.depsMap[parent].add(child);
} else {
_this.depsMap[parent] = new Set([child]);
}
if (_this.reverseDepsMap[child]) {
_this.reverseDepsMap[child].add(parent);
} else {
_this.reverseDepsMap[child] = new Set([parent]);
}
});
});
compiler.hooks.done.tap(this.pluginName, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee() {
var deps, reverseDeps, handledDepsMap;
return regenerator.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
try {
deps = parseSetDeps(_this.depsMap);
reverseDeps = parseSetDeps(_this.reverseDepsMap);
saveJsonToLog(deps, 'analyze-deps.dep.json');
saveJsonToLog(reverseDeps, 'analyze-deps.dep-reverse.json');
handledDepsMap = tComm.getFlattenedDeps(reverseDeps);
saveJsonToLog(handledDepsMap, 'analyze-deps.dep-flatten.json');
} catch (err) {
console.log('[DepAnalysisPlugin] err: ', err);
}
case 1:
case "end":
return _context.stop();
}
}, _callee);
})));
}
}]);
return DepAnalysisPlugin;
}();
function _arrayLikeToArray$5(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray$5(arr);
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _unsupportedIterableToArray$5(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray$5(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$5(o, minLen);
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$5(arr) || _nonIterableSpread();
}
var getPageSet$1 = function getPageSet() {
return getUniCliCache('getPageSet')();
};
var INPUT_DIR = process.env.UNI_INPUT_DIR || '';
var SUB_PACKAGE_ROOTS = Object.keys(process.UNI_SUBPACKAGES || {});
var subPackageRootsWithSlash = Object.keys(process.UNI_SUBPACKAGES || {}).map(function (root) {
return "".concat(root, "/");
});
var mainPackagePages;
var ROOT_NAME = 'MAIN';
var VENDER_PATH = 'common/vendor';
/**
* 获取主包页面,比如`src/project/user/views/index/index-home.vue`
*/
function getMainPackagePages() {
if (mainPackagePages) {
return mainPackagePages;
}
var subPackages = SUB_PACKAGE_ROOTS.map(function (item) {
return path__namespace.resolve(INPUT_DIR, item);
});
var pages = Array.from(getPageSet$1()).map(function (item) {
return path__namespace.resolve(INPUT_DIR, item);
});
mainPackagePages = pages.filter(function (page) {
return !subPackages.find(function (subPackage) {
return page.startsWith(subPackage);
});
}).map(function (item) {
return "".concat(getRelativePath(item), ".vue");
});
console.log('[DISPATCH SCRIPT] mainPackagePages', mainPackagePages);
return mainPackagePages;
}
/**
* 获取main.js路径,比如`src/project/user/main.js`
*/
function getMainJSPath() {
return getRelativePath(path__namespace.resolve(INPUT_DIR, 'main.js'));
}
/**
* 获取页面列表
*/
function getPagesList() {
var pages = Array.from(getPageSet$1());
return pages.map(function (item) {
return getRelativePath(path__namespace.resolve(INPUT_DIR, item));
});
}
/**
* path是否为页面路径
* @example
* src/project/user/views/match-data/rank.vue // true
* src/local-logic/tip-match/homepage/homepage.js // false
*/
function isPage(path) {
var pages = getPagesList();
var isPage = pages.find(function (item) {
return path.startsWith(item);
});
return !!isPage;
}
/**
* 获取页面对应的分包
*/
function getPageSubPackages(page) {
var subPackageMap = SUB_PACKAGE_ROOTS.reduce(function (acc, item) {
acc[getRelativePath(path__namespace.resolve(INPUT_DIR, item))] = item;
return acc;
}, {});
var subPackage = Object.keys(subPackageMap).find(function (item) {
return page.startsWith("".concat(item, "/"));
});
if (subPackage) {
return subPackageMap[subPackage];
}
}
// 基础检测,vue和css类型不处理,只处理js类型
function baseTest(module, options) {
var mainPath = normalizePath(path__namespace.resolve(process.env.UNI_INPUT_DIR || '', 'main.'));
if (module.type === 'css/mini-extract') {
return false;
}
if (module.resource) {
var _options$whiteList;
var resource = normalizePath(module.resource);
if (resource.indexOf('.vue') !== -1 || resource.indexOf('.nvue') !== -1 || resource.indexOf(mainPath) === 0 // main.js
) {
return false;
}
if (options !== null && options !== void 0 && (_options$whiteList = options.whiteList) !== null && _options$whiteList !== void 0 && _options$whiteList.length) {
var isExist = options.whiteList.find(function (url) {
return resource.includes(url);
});
if (isExist) console.log(resource, isExist);
return !!isExist;
}
}
return true;
}
var findSubPackages$1 = function findSubPackages(chunks) {
return chunks.reduce(function (pkgs, item) {
var name = normalizePath(item.name);
// 用chunk的名称匹配分包
var pkgRoot = subPackageRootsWithSlash.find(function (root) {
return name.indexOf(root) === 0;
});
pkgRoot && pkgs.add(pkgRoot);
return pkgs;
}, new Set());
};
var hasMainPackage = function hasMainPackage(chunks) {
// 有一个chunk的名称,在所有分包中都匹配不到
return chunks.find(function (item) {
return !subPackageRootsWithSlash.find(function (root) {
return item.name.indexOf(root) === 0;
});
});
};
var findNameChunk = function findNameChunk(chunks, name) {
return chunks.find(function (chunk) {
return chunk.name === name;
});
};
function realTraverse(list, map, result, originKey) {
for (var _i = 0, _arr = _toConsumableArray(list); _i < _arr.length; _i++) {
var key = _arr[_i];
if (result.indexOf(key) > -1) {
continue;
}
result.push(key);
var before = map[key];
if (before) {
before = before.filter(function (item) {
return item !== originKey && list.indexOf(item) <= -1;
});
realTraverse(before, map, result, originKey);
}
}
}
function excludeSubPackagePages(obj) {
var pages = getPagesList();
var mainPath = getMainJSPath();
return Object.keys(obj).reduce(function (acc, key) {
var isPage = pages.find(function (item) {
return key.startsWith(item);
});
acc[key] = obj[key].filter(function (item) {
return !(item === mainPath && isPage);
});
return acc;
}, {});
}
function excludeRepeatElements(obj) {
return Object.keys(obj).reduce(function (acc, key) {
acc[key] = Array.from(new Set(obj[key])).filter(function (item) {
return item !== key;
});
return acc;
}, {});
}
function traverseDeps(deps) {
deps = excludeRepeatElements(deps);
deps = excludeSubPackagePages(deps);
var list = Object.keys(deps);
var newDeps = {};
for (var _i2 = 0, _list = list; _i2 < _list.length; _i2++) {
var item = _list[_i2];
var temp = _toConsumableArray(deps[item]);
var result = [];
realTraverse(_toConsumableArray(temp), deps, result, item);
newDeps[item] = result;
}
var res = excludeRepeatElements(newDeps);
saveJsonToLog(res, 'dispatch-script.deps-traverse-result.json');
return res;
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArrayLimit(r, l) {
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = !0,
o = !1;
try {
if (i = (t = t.call(r)).next, 0 === l) {
if (Object(t) !== t) return;
f = !1;
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
} catch (r) {
o = !0, n = r;
} finally {
try {
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$5(arr, i) || _nonIterableRest();
}
function _createForOfIteratorHelper$4(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray$4(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$4(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen); }
function _arrayLikeToArray$4(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function savingUsingComponentMap(name, map) {
var res = Object.keys(map).reduce(function (acc, item) {
// 之前是Set,转为数组才能保存
acc[item] = _toConsumableArray(map[item]);
return acc;
}, {});
saveJsonToLog(res, name);
}
function strMapToObj(strMap) {
var obj = Object.create(null);
var _iterator = _createForOfIteratorHelper$4(strMap),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var _step$value = _slicedToArray(_step.value, 2),
k = _step$value[0],
v = _step$value[1];
obj[k] = JSON.parse(v);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return obj;
}
/**
* map转换为json
*/
function mapToJson(map) {
return strMapToObj(map);
}
/**
* 拉平组件关系
*
* @example
* // 示例如下:
*
* {
* "app": [
* "../../local-component/ui/tip-match/tip-match-tip-popup/index",
* ],
* "views/index/index-home": [
* "../../local-component/ui/pages/user/home/index",
* ],
* "../../components/ua-nes-tim/components/uni-badge": [],
* "../../components/ua-nes-tim/components/sned-target-selector": [
* "../../components/ua-nes-tim/components/uni-data-select",
* "../../components/ua-nes-tim/components/uni-icons/uni-icons"
* ],
* }
*/
function flattenUsingComponentMap(map) {
var res = {};
function cursive() {
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var list = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
Object.keys(obj).map(function (key) {
var value = map[key];
if (value) {
list.push.apply(list, _toConsumableArray(Object.keys(value)));
cursive(value, list);
}
});
}
Object.keys(map).map(function (key) {
var temp = [];
var value = map[key];
if (value) {
temp.push.apply(temp, _toConsumableArray(Object.keys(value)));
}
cursive(value, temp);
res[key] = temp;
});
saveJsonToLog(res, 'dispatch-vue.flatten-using-component-map.json');
return res;
}
/**
* 获取使用一个组件的所有分包,返回 allUsingComponentMap
* @example
*
* // allUsingComponentMap 示例
*
* {
* "../../local-component/ui/pages/user/home/index": [
* "views/index/index-home"
* ],
* "../../local-component/module/tip-match/tip-match-protocol-dialog/index": [
* "views/index/index-home",
* "views/match/match-detail-index",
* "views/room/room-quick",
* "views/create/create"
* ],
* "../../local-component/ui/tip-match/tip-match-qr-code-popup/index": [
* "views/index/index-home",
* "views/sche/sche",
* "views/match/match-detail-index",
* "views/room/room",
* "views/room/ai-room",
* "views/room/video-room",
* "views/team/team-zone/index",
* "views/match-detail/match-detail",
* "views/setting/match-setting"
* ],
* "views/team/team-list/sub/tip-match-team-list": [
* "views/team/team-list/index"
* ],
* }
*/
function handleComponentMap(map, pageSet) {
var res = {};
for (var _i = 0, _Object$keys = Object.keys(map); _i < _Object$keys.length; _i++) {
var name = _Object$keys[_i];
if (!pageSet.has(name)) {
continue;
}
var value = map[name] || [];
var _iterator2 = _createForOfIteratorHelper$4(value),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var key = _step2.value;
if (!res[key]) {
res[key] = new Set();
}
res[key].add(name);
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
}
return res;
}
/**
* 处理 usingComponentsMap 迭代关系
* @example
*
* // usingComponentsMap 示例
* {
* "app": {
* "../../local-component/ui/tip-match/tip-match-header-mp/index": {
* "../../local-component/ui/tip-match/tip-match-global-notice/index": {},
* "../../local-component/ui/tip-match/tip-match-global-msg/index": {},
* "../../local-component/ui/tip-match/tip-match-popver/index": {}
* }
* },
* "views/index/index-home": {
* "../../local-component/ui/pages/user/home/index": {
* "../../local-component/ui/tip-match/tip-match-loading-mode/index": {},
* "../../local-component/ui/tip-match/tip-match-item/index": {},
* "../../local-component/ui/pages/user/guide/index": {},
* "../../local-component/ui/tip-match/tip-match-popver/index": {},
* "../../component/ui/tip-merchant/tip-comp-scroll-view/index": {
* "../../component/ui/tip-merchant/tip-comp-scroll-view/scroll-view-mp": {}
* },
* },
* "../../local-component/ui/tip-match/tip-match-qr-code-popup/index": {
* "../../component/ui/widget/qrcode/index": {
* "../../component/ui/widget/qrcode/qrcode-mp": {}
* }
* }
* },
* "packages/views/webview/webview": {},
* }
*/
function genIterativeComponentMap(usingComponentsMap) {
Object.keys(usingComponentsMap).map(function (page) {
var compObj = usingComponentsMap[page];
Object.keys(compObj).map(function (comp) {
if (usingComponentsMap[comp]) {
compObj[comp] = usingComponentsMap[comp];
}
});
});
}
/**
* 格式化组件路径
* genericComponents数组中存储的是一个key,找到其对应的真正的组件路径
* @param comps 组件列表
* @param curPath 当前路径
* @returns 处理后对象
* @example
*
* formatComponentPath(
* ['index-tip-draggable-default'],
* '../../local-component/ui/tip-match/tip-match-rank-award/index'
* )
*
* // 结果如下:
*
* {
* 'index-tip-draggable-default':
* '../../local-component/ui/tip-match/tip-match-rank-award/index-tip-draggable-default'
* }
*
*/
function formatComponentPath() {
var comps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var curPath = arguments.length > 1 ? arguments[1] : undefined;
return comps.reduce(function (acc, item) {
var key = item;
if (!key.startsWith('/')) {
var list = curPath.split('/');
key = "/".concat(list.slice(0, list.length - 1).join('/'), "/").concat(key);
}
acc[item] = key;
return acc;
}, {});
}
/**
* 处理 usingComponents,路径去掉前面的`/`
*
* 即`/../../components/xx`转为`../../components/xx`。
*
* @param usingComponents 使用组件对象
*/
function handleUsingComponents() {
var usingComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return Object.keys(usingComponents).reduce(function (acc, item) {
var compPath = usingComponents[item].slice(1);
acc[compPath] = {};
return acc;
}, {});
}
function getNewPosName(component) {
var list = component.split('/').filter(function (item) {
return item !== '..';
});
var folderName = list.slice(0, list.length - 1).join('-').replaceAll('tip-match', 'tm').replaceAll('local-component-module', 'lcm').replaceAll('local-component-ui', 'lcu');
return [folderName, list[list.length - 1]];
}
function getMoveComponents(_ref) {
var component = _ref.component,
subPackage = _ref.subPackage,
outputDir = _ref.outputDir;
var _getNewPosName = getNewPosName(component),
_getNewPosName2 = _slicedToArray(_getNewPosName, 2),
newPosName = _getNewPosName2[0],
fileName = _getNewPosName2[1];
var target = path__namespace.resolve(outputDir, subPackage, newPosName);
var sourceRef = "/".concat(component.replace('../../', ''));
// const comp = path.resolve(outputDir, `./${sourceRef}`);
var targetRef = path__namespace.join(target.replace(outputDir, ''), fileName).split(path__namespace.sep).join('/');
// console.log(`[Dispatch Vue] 正在移动组件 ${getRelativePath(comp)} 到 ${getRelativePath(target)} 中`);
return {
sourceRef: sourceRef,
targetRef: targetRef
};
}
/**
* 找到pages对应的分包
* @param pages 使用某一个组件的页面列表
* @param subPackageRoots 分包列表
* @returns 使用某一个组件的分包列表
*/
function findSubPackages(pages, subPackageRoots) {
var pkgs = [];
// eslint-disable-next-line @typescript-eslint/prefer-for-of
var _loop = function _loop() {
var pagePath = pages[i];
// subPackageRoots,形如views/match, views/sche
var pkgRoot = subPackageRoots.filter(function (root) {
return pagePath.indexOf("".concat(root, "/")) === 0;
});
if (!pkgRoot.length) {
// 被非分包引用
return {
v: []
};
}
pkgs.push.apply(pkgs, _toConsumableArray(pkgRoot));
},
_ret;
for (var i = 0; i < pages.length; i++) {
_ret = _loop();
if (_ret) return _ret.v;
}
return pkgs;
}
function getAllGlobalComps(_ref2) {
var globalComps = _ref2.globalComps,
flattenUsingComponent = _ref2.flattenUsingComponent;
var globalCompsValues = Object.values(globalComps);
var childGlobalComps = globalCompsValues.reduce(function (acc, item) {
if (flattenUsingComponent[item]) {
flattenUsingComponent[item].map(function (child) {
acc.add(child);
});
}
if (item.startsWith('/')) {
var newItem = item.slice(1);
if (flattenUsingComponent[newItem]) {
flattenUsingComponent[newItem].map(function (child) {
acc.add(child);
});
}
}
return acc;
}, new Set());
globalCompsValues.push.apply(globalCompsValues, _toConsumableArray(Array.from(childGlobalComps)));
var globalCompSet = globalCompsValues.map(function (item) {
if (item.startsWith('/')) {
return item.slice(1);
}
return item;
});
var parsedGlobalCompsValues = Array.from(new Set(globalCompSet));
return parsedGlobalCompsValues;
}
var findReplaceMap = function findReplaceMap(key) {
var refMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var subPackage = Object.keys(refMap).find(function (item) {
var parsedItem = item.endsWith('/') ? item : "".concat(item, "/");
return key.startsWith(parsedItem);
});
if (subPackage) {
return refMap[subPackage];
}
};
var formatTime = function formatTime(time) {
return tComm.timeStampFormat(time, 'yyyy-MM-dd hh:mm:ss');
};
function replaceAllPolyfill() {
String.prototype.replaceAll = function (s1, s2) {
var newStr = s1.replace(/([+*?[\](){}^$|])/g, '\\$1');
return this.replace(new RegExp(newStr, 'gm'), s2);
};
}
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _createForOfIteratorHelper$3(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$3(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$3(o, minLen); }
function _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
var getPageSet = function getPageSet() {
return getUniCliCache('getPageSet')();
};
var getJsonFileMap = function getJsonFileMap() {
return getUniCliCache('getJsonFileMap')();
};
var getGlobalUsingComponents = function getGlobalUsingComponents() {
return getUniCliCache('getGlobalUsingComponents')();
};
var getWXComponents = function getWXComponents() {
return getUniCliCache('getWXComponents')();
};
var getComponentSet = function getComponentSet() {
return getUniCliCache('getComponentSet')();
};
var getJsonFile = function getJsonFile() {
return getUniCliCache('getJsonFile')();
};
var MOVE_COMPONENT_MIN_DISABLE_LIST = [];
var MOVE_COMPONENT_MIN_USE_TIMES = 100;
var outputDir = process.env.UNI_OUTPUT_DIR;
var usingComponentsMap = {};
function getUsingComponentsMap(jsonFileMap, pageSet) {
// 处理genericComponents
var _iterator = _createForOfIteratorHelper$3(jsonFileMap.keys()),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var name = _step.value;
var jsonObj = JSON.parse(jsonFileMap.get(name));
var _jsonObj$usingCompone = jsonObj.usingComponents,
usingComponents = _jsonObj$usingCompone === void 0 ? {} : _jsonObj$usingCompone;
var _jsonObj$genericCompo = jsonObj.genericComponents,
genericComponents = _jsonObj$genericCompo === void 0 ? [] : _jsonObj$genericCompo;
var parsedGeneric = formatComponentPath(genericComponents, name) || {};
usingComponents = _objectSpread$1(_objectSpread$1({}, parsedGeneric), usingComponents);
usingComponentsMap[name] = handleUsingComponents(usingComponents);
if (!usingComponents || !pageSet.has(name)) {
continue;
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
function analyzeComponent() {
var _options$moveComponen, _options$moveComponen2;
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
needLog: true,
needGlobalComponents: false
};
try {
saveJsonToLog(getGlobalUsingComponents(), 'dispatch-vue.get-global-using-components.json', options.needLog);
saveJsonToLog(getWXComponents(), 'dispatch-vue.get-wx-components.json', options.needLog);
saveJsonToLog(getComponentSet(), 'dispatch-vue.get-component-set.json', options.needLog);
saveJsonToLog(getJsonFile(), 'dispatch-vue.get-json-file.json', options.needLog);
} catch (err) {}
var subPackageRoots = Object.keys(process.UNI_SUBPACKAGES) || {};
if (!subPackageRoots.length) {
return {};
}
MOVE_COMPONENT_MIN_USE_TIMES = (options === null || options === void 0 || (_options$moveComponen = options.moveComponents) === null || _options$moveComponen === void 0 ? void 0 : _options$moveComponen.minUseTimes) || MOVE_COMPONENT_MIN_USE_TIMES;
MOVE_COMPONENT_MIN_DISABLE_LIST = (options === null || options === void 0 || (_options$moveComponen2 = options.moveComponents) === null || _options$moveComponen2 === void 0 ? void 0 : _options$moveComponen2.disableList) || [];
/**
* // jsonFileMap 示例
* {
* "app": "{\n \"pages\": [\n \"views/index/index-home\"\n ],\n \"subPackages\": [\n {\n \"root\": \"packages\",\n \"pages\": [\n \"views/webview/webview\"\n ]\n },\n {\n \"root\": \"views/dy-channel-match\",\n \"pages\": [\n \"index\"\n ]\n },\n {\n \"root\": \"views/qq-channel-match\",\n \"pages\": [\n \"index\"\n ]\n },\n {\n \"root\": \"views/environment-tips\",\n \"pages\": [\n \"index\"\n ]\n },\n {\n \"root\": \"views/sche\",\n \"pages\": [\n \"sche\",\n \"cycle-set\",\n \"cup-set\",\n \"select-promotion-team\",\n \"sche-set\"\n ]\n },\n {\n \"root\": \"views/match\",\n \"pages\": [\n \"match-detail-index\",\n \"match-team-web-invite\",\n \"match-rule-detail\",\n \"match-data/index\",\n \"tip-match-game-record\",\n \"match-team-mp-invite\",\n \"reward-cfg\",\n \"image-crop\",\n \"poster-mp-invite\",\n \"poster-simple-mp-invite\",\n \"match-ob-room\",\n \"match-manager\",\n \"match-manager-apply\",\n \"match-manager-apply-list\",\n \"schedule-list\"\n ]\n },\n {\n \"root\": \"views/room\",\n \"pages\": [\n \"room\",\n \"test-join-room\",\n \"ai-room\",\n \"video-room\",\n \"room-quick\"\n ]\n },\n {\n \"root\": \"views/battle\",\n \"pages\": [\n \"battle-detail\",\n \"battle-detail-undetermined\"\n ]\n },\n {\n \"root\": \"views/create\",\n \"pages\": [\n \"create-preview\",\n \"create\",\n \"create-rule\",\n \"create-custom-group-type\",\n \"create-complete\"\n ]\n },\n {\n \"root\": \"views/history\",\n \"pages\": [\n \"index-history\"\n ]\n },\n {\n \"root\": \"views/edit\",\n \"pages\": [\n \"edit-rule\",\n \"match-edit\",\n \"match-edit-reward\",\n \"edit-custom-group-type\"\n ]\n },\n {\n \"root\": \"views/team\",\n \"pages\": [\n \"team-list/index\",\n \"team-zone/index\",\n \"team-member/index\"\n ]\n },\n {\n \"root\": \"views/match-detail\",\n \"pages\": [\n \"match-detail\",\n \"publish-news\"\n ]\n },\n {\n \"root\": \"views/phone\",\n \"pages\": [\n \"bind-phone\"\n ]\n },\n {\n \"root\": \"views/homepage\",\n \"pages\": [\n \"account-manage\",\n \"protocol\",\n \"homepage\"\n ]\n },\n {\n \"root\": \"views/setting\",\n \"pages\": [\n \"match-setting\"\n ]\n },\n {\n \"root\": \"views/owner\",\n \"pages\": [\n \"owner-introduce\",\n \"owner-apply\",\n \"owner-share\",\n \"owner-save\",\n \"owner-mp-save\"\n ]\n }\n ],\n \"window\": {\n \"initialRenderingCache\": \"static\",\n \"pageOrientation\": \"portrait\",\n \"navigationBarTextStyle\": \"black\",\n \"navigationBarBackgroundColor\": \"#FFFFFF\",\n \"backgroundColor\": \"#FFFFFF\",\n \"backgroundColorTop\": \"#F4F5F6\",\n \"backgroundColorBottom\": \"#F4F5F6\",\n \"navigationStyle\": \"custom\"\n },\n \"preloadRule\": {\n \"views/index/index-home\": {\n \"network\": \"all\",\n \"packages\": [\n \"views/match-detail\",\n \"views/create\",\n \"views/homepage\",\n \"views/history\"\n ]\n },\n \"views/match-detail/match-detail\": {\n \"network\": \"all\",\n \"packages\": [\n \"views/room\",\n \"views/setting\",\n \"views/team\"\n ]\n },\n \"views/homepage/account-manage\": {\n \"network\": \"all\",\n \"packages\": [\n \"views/phone\",\n \"views/match\"\n ]\n },\n \"views/create/create\": {\n \"network\": \"all\",\n \"packages\": [\n \"views/phone\"\n ]\n },\n \"views/sche/sche\": {\n \"network\": \"all\",\n \"packages\": [\n \"views/edit\",\n \"views/room\"\n ]\n },\n \"views/room/room\": {\n \"network\": \"all\",\n \"packages\": [\n \"views/battle\"\n ]\n },\n \"views/battle/battle-detail\": {\n \"network\": \"all\",\n \"packages\": [\n \"views/match\"\n ]\n },\n \"views/match/match-detail-index\": {\n \"network\": \"all\",\n \"packages\": [\n \"__APP__\"\n ]\n }\n },\n \"embeddedAppIdList\": [\n \"wx4a0a73ec028e47d7\",\n \"wx8abaf00ee8c3202e\"\n ],\n \"permission\": {\n \"scope.userLocation\": {\n \"desc\": \"演示定位能力\"\n }\n },\n \"lazyCodeLoading\": \"requiredComponents\",\n \"plugins\": {\n \"liveAccountPlugin\": {\n \"version\": \"1.0.11\",\n \"provider\": \"wxd756fc4323d8d8ae\"\n }\n },\n