You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
5.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUniXPagePaths = exports.isUniXPageFile = exports.normalizeUniAppXAppConfig = exports.normalizeUniAppXAppPagesJson = void 0;
const path_1 = __importDefault(require("path"));
const shared_1 = require("@vue/shared");
const json_1 = require("../json");
const pages_1 = require("../pages");
const utils_1 = require("../../utils");
const uniRoutes_1 = require("../app/pages/uniRoutes");
const uniConfig_1 = require("./uniConfig");
const preprocess_1 = require("../../preprocess");
const utils_2 = require("../utils");
__exportStar(require("./manifest"), exports);
function normalizeUniAppXAppPagesJson(jsonStr) {
// 先条件编译
jsonStr = (0, preprocess_1.preUVueJson)(jsonStr, 'pages.json');
(0, utils_2.checkPagesJson)(jsonStr, process.env.UNI_INPUT_DIR);
const pagesJson = {
pages: [],
globalStyle: {},
};
let userPagesJson = {
pages: [],
globalStyle: {},
};
try {
// 此处不需要条件编译了
userPagesJson = (0, json_1.parseJson)(jsonStr, false, 'pages.json');
}
catch (e) {
console.error(`[vite] Error: pages.json parse failed.\n`, jsonStr, e);
}
// pages
(0, pages_1.validatePages)(userPagesJson, jsonStr);
userPagesJson.subPackages =
userPagesJson.subPackages || userPagesJson.subpackages;
// subPackages
if (userPagesJson.subPackages) {
userPagesJson.pages.push(...normalizeSubPackages(userPagesJson.subPackages));
}
pagesJson.pages = userPagesJson.pages;
// pageStyle
normalizePages(pagesJson.pages);
// globalStyle
pagesJson.globalStyle = normalizePageStyle(userPagesJson.globalStyle);
// tabBar
if (userPagesJson.tabBar) {
pagesJson.tabBar = userPagesJson.tabBar;
}
// condition
if (userPagesJson.condition) {
pagesJson.condition = userPagesJson.condition;
}
// uniIdRouter
if (userPagesJson.uniIdRouter) {
pagesJson.uniIdRouter = userPagesJson.uniIdRouter;
}
// 是否应该用 process.env.UNI_UTS_PLATFORM
(0, pages_1.filterPlatformPages)(process.env.UNI_PLATFORM, pagesJson);
// 缓存页面列表
pages_1.pagesCacheSet.clear();
pagesJson.pages.forEach((page) => pages_1.pagesCacheSet.add(page.path));
return pagesJson;
}
exports.normalizeUniAppXAppPagesJson = normalizeUniAppXAppPagesJson;
function normalizeSubPackages(subPackages) {
const pages = [];
if ((0, shared_1.isArray)(subPackages)) {
subPackages.forEach(({ root, pages: subPages }) => {
if (root && subPages.length) {
subPages.forEach((subPage) => {
subPage.path = (0, utils_1.normalizePath)(path_1.default.join(root, subPage.path));
subPage.style = subPage.style;
pages.push(subPage);
});
}
});
}
return pages;
}
function normalizePages(pages) {
pages.forEach((page) => {
page.style = normalizePageStyle(page.style);
});
}
function normalizePageStyle(pageStyle) {
if (pageStyle) {
(0, shared_1.extend)(pageStyle, pageStyle['app']);
(0, pages_1.removePlatformStyle)(pageStyle);
return pageStyle;
}
return {};
}
/**
* TODO 应该闭包通过globalThis赋值
* @param pagesJson
* @param manifestJson
* @returns
*/
function normalizeUniAppXAppConfig(pagesJson, manifestJson) {
const uniConfig = (0, uniConfig_1.normalizeAppXUniConfig)(pagesJson, manifestJson);
const tabBar = uniConfig.tabBar;
delete uniConfig.tabBar;
let appConfigJs = `const __uniConfig = ${JSON.stringify(uniConfig)};
__uniConfig.getTabBarConfig = () => {return ${tabBar ? JSON.stringify(tabBar) : 'undefined'}};
__uniConfig.tabBar = __uniConfig.getTabBarConfig();
const __uniRoutes = ${(0, uniRoutes_1.normalizeAppUniRoutes)(pagesJson)}.map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute)).concat(typeof __uniSystemRoutes !== 'undefined' ? __uniSystemRoutes : []);
`;
if (process.env.UNI_UTS_PLATFORM === 'app-harmony') {
appConfigJs += `globalThis.__uniConfig = __uniConfig;
globalThis.__uniRoutes = __uniRoutes;`;
}
return appConfigJs;
}
exports.normalizeUniAppXAppConfig = normalizeUniAppXAppConfig;
function isUniXPageFile(source, importer, inputDir = process.env.UNI_INPUT_DIR) {
if (source.startsWith('@/')) {
return (0, pages_1.isUniPageFile)(source.slice(2), inputDir);
}
if (source.startsWith('.')) {
return (0, pages_1.isUniPageFile)(path_1.default.resolve(path_1.default.dirname(importer), source), inputDir);
}
return false;
}
exports.isUniXPageFile = isUniXPageFile;
function getUniXPagePaths() {
if (process.env.UNI_COMPILE_EXT_API_PAGE_PATHS) {
return JSON.parse(process.env.UNI_COMPILE_EXT_API_PAGE_PATHS);
}
return Array.from(pages_1.pagesCacheSet);
}
exports.getUniXPagePaths = getUniXPagePaths;