| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.uniAppPagesPlugin = void 0;
- const path_1 = __importDefault(require("path"));
- const fs_extra_1 = __importDefault(require("fs-extra"));
- const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
- const utils_1 = require("./utils");
- const utils_2 = require("../utils");
- function uniAppPagesPlugin() {
- const pagesJsonPath = path_1.default.resolve(process.env.UNI_INPUT_DIR, 'pages.json');
- const pagesJsonUTSPath = path_1.default.resolve(process.env.UNI_INPUT_DIR, uni_cli_shared_1.PAGES_JSON_UTS);
- let imports = [];
- let routes = [];
- let globalStyle = 'new Map()';
- let tabBar = 'null';
- let launchPage = 'null';
- let conditionUrl = '';
- let uniIdRouter = 'new Map()';
- return {
- name: 'uni:app-pages',
- apply: 'build',
- resolveId(id) {
- if ((0, utils_2.isPages)(id)) {
- return pagesJsonUTSPath;
- }
- },
- load(id) {
- if ((0, utils_2.isPages)(id)) {
- return fs_extra_1.default.readFileSync(pagesJsonPath, 'utf8');
- }
- },
- transform(code, id) {
- if ((0, utils_2.isPages)(id)) {
- this.addWatchFile(path_1.default.resolve(process.env.UNI_INPUT_DIR, 'pages.json'));
- let pagesJson = {
- pages: [],
- globalStyle: {
- navigationBar: {},
- },
- };
- // 调整换行符,确保 parseTree 的loc正确
- code = code.replace(/\r\n/g, '\n');
- try {
- pagesJson = (0, uni_cli_shared_1.normalizeUniAppXAppPagesJson)(code);
- }
- catch (err) {
- if (err.loc) {
- const error = (0, uni_cli_shared_1.createRollupError)('uni:app-pages', pagesJsonPath, err, code);
- this.error(error);
- }
- else {
- throw err;
- }
- }
- imports = [];
- routes = [];
- process.env.UNI_APP_X_PAGE_COUNT = pagesJson.pages.length + '';
- pagesJson.pages.forEach((page, index) => {
- const className = (0, uni_cli_shared_1.genUTSClassName)(page.path);
- let isQuit = index === 0;
- imports.push(page.path);
- routes.push(`{ path: "${page.path}", component: ${className}Class, meta: { isQuit: ${isQuit} } as PageMeta, style: ${stringifyPageStyle(page.style)}${page.needLogin === undefined
- ? ''
- : ', needLogin: ' + page.needLogin} } as PageRoute`);
- });
- if (pagesJson.globalStyle) {
- globalStyle = stringifyPageStyle(pagesJson.globalStyle);
- }
- if (pagesJson.tabBar) {
- tabBar = (0, utils_1.stringifyMap)(pagesJson.tabBar);
- }
- if (pagesJson.condition) {
- const conditionInfo = (0, uni_cli_shared_1.parseArguments)(pagesJson);
- if (conditionInfo) {
- const { path, query } = JSON.parse(conditionInfo);
- conditionUrl = `${path}${query ? '?' + query : ''}`;
- }
- }
- if (pagesJson.uniIdRouter) {
- uniIdRouter = (0, utils_1.stringifyMap)(pagesJson.uniIdRouter);
- }
- launchPage = stringifyLaunchPage(pagesJson.pages[0]);
- return {
- code: `${imports.map((p) => `import './${p}.uvue'`).join('\n')}
- export default 'pages.json'`,
- map: null,
- };
- }
- },
- generateBundle(_, bundle) {
- if (bundle[utils_1.ENTRY_FILENAME]) {
- const asset = bundle[utils_1.ENTRY_FILENAME];
- asset.source =
- asset.source +
- `
- ${imports
- .map((p) => {
- const className = (0, uni_cli_shared_1.genUTSClassName)(p);
- return `import ${className}Class from './${p}.uvue?type=page'`;
- })
- .join('\n')}
- function definePageRoutes() {
- ${routes.map((route) => `__uniRoutes.push(${route})`).join('\n')}
- }
- const __uniTabBar: Map<string, any | null> | null = ${tabBar}
- const __uniLaunchPage: Map<string, any | null> = ${launchPage}
- @Suppress("UNCHECKED_CAST")
- function defineAppConfig(){
- __uniConfig.entryPagePath = '/${imports[0]}'
- __uniConfig.globalStyle = ${globalStyle}
- __uniConfig.tabBar = __uniTabBar as Map<string, any> | null
- __uniConfig.conditionUrl = '${conditionUrl}'
- __uniConfig.uniIdRouter = ${uniIdRouter}
- __uniConfig.ready = true
- }
- `;
- }
- },
- };
- }
- exports.uniAppPagesPlugin = uniAppPagesPlugin;
- function stringifyLaunchPage(launchPage) {
- return (0, utils_1.stringifyMap)({
- url: launchPage.path,
- style: launchPage.style,
- }, true);
- }
- function stringifyPageStyle(pageStyle) {
- return (0, utils_1.stringifyMap)(pageStyle);
- }
|