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;
|
|||
|
}
|