106 lines
3.5 KiB
JavaScript
106 lines
3.5 KiB
JavaScript
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.parseMiniProgramProjectJson = exports.isMiniProgramProjectJsonKey = void 0;
|
||
const shared_1 = require("@vue/shared");
|
||
const merge_1 = require("merge");
|
||
const json_1 = require("../json");
|
||
const projectKeys = [
|
||
'appid',
|
||
'setting',
|
||
'miniprogramRoot',
|
||
'cloudfunctionRoot',
|
||
'qcloudRoot',
|
||
'pluginRoot',
|
||
'compileType',
|
||
'libVersion',
|
||
'projectname',
|
||
'packOptions',
|
||
'debugOptions',
|
||
'scripts',
|
||
'cloudbaseRoot',
|
||
];
|
||
function isMiniProgramProjectJsonKey(name) {
|
||
return projectKeys.includes(name);
|
||
}
|
||
exports.isMiniProgramProjectJsonKey = isMiniProgramProjectJsonKey;
|
||
function parseMiniProgramProjectJson(jsonStr, platform, { template, pagesJson }) {
|
||
const projectJson = JSON.parse(JSON.stringify(template));
|
||
const manifestJson = (0, json_1.parseJson)(jsonStr);
|
||
if (manifestJson) {
|
||
projectJson.projectname = manifestJson.name;
|
||
const platformConfig = manifestJson[platform];
|
||
if (platformConfig) {
|
||
projectKeys.forEach((name) => {
|
||
if ((0, shared_1.hasOwn)(platformConfig, name)) {
|
||
if ((0, shared_1.isPlainObject)(platformConfig[name]) &&
|
||
(0, shared_1.isPlainObject)(projectJson[name])) {
|
||
;
|
||
projectJson[name] = (0, merge_1.recursive)(true, projectJson[name], platformConfig[name]);
|
||
}
|
||
else {
|
||
;
|
||
projectJson[name] = platformConfig[name];
|
||
}
|
||
}
|
||
});
|
||
// 使用了微信小程序手势系统,自动开启 ES6=>ES5
|
||
platform === 'mp-weixin' &&
|
||
weixinSkyline(platformConfig) &&
|
||
openES62ES5(projectJson);
|
||
}
|
||
}
|
||
// 其实仅开发期间 condition 生效即可,暂不做判断
|
||
const miniprogram = parseMiniProgramCondition(pagesJson);
|
||
if (miniprogram) {
|
||
if (!projectJson.condition) {
|
||
projectJson.condition = {};
|
||
}
|
||
projectJson.condition.miniprogram = miniprogram;
|
||
}
|
||
if (!projectJson.appid) {
|
||
projectJson.appid = 'touristappid';
|
||
}
|
||
return projectJson;
|
||
}
|
||
exports.parseMiniProgramProjectJson = parseMiniProgramProjectJson;
|
||
function weixinSkyline(config) {
|
||
return (config.renderer === 'skyline' &&
|
||
config.lazyCodeLoading === 'requiredComponents');
|
||
}
|
||
function openES62ES5(config) {
|
||
if (!config.setting) {
|
||
config.setting = {};
|
||
}
|
||
if (!config.setting.es6) {
|
||
config.setting.es6 = true;
|
||
}
|
||
}
|
||
function parseMiniProgramCondition(pagesJson) {
|
||
const launchPagePath = process.env.UNI_CLI_LAUNCH_PAGE_PATH || '';
|
||
if (launchPagePath) {
|
||
return {
|
||
current: 0,
|
||
list: [
|
||
{
|
||
id: 0,
|
||
name: launchPagePath,
|
||
pathName: launchPagePath,
|
||
query: process.env.UNI_CLI_LAUNCH_PAGE_QUERY || '', // 启动参数,在页面的onLoad函数里面得到。
|
||
},
|
||
],
|
||
};
|
||
}
|
||
const condition = pagesJson.condition;
|
||
if (!condition || !(0, shared_1.isArray)(condition.list) || !condition.list.length) {
|
||
return;
|
||
}
|
||
condition.list.forEach(function (item, index) {
|
||
item.id = item.id || index;
|
||
if (item.path) {
|
||
item.pathName = item.path;
|
||
delete item.path;
|
||
}
|
||
});
|
||
return condition;
|
||
}
|