uni-ticket-system/node_modules/@dcloudio/uni-mp-vite/dist/plugins/pagesJson.js
2023-12-05 10:11:10 +08:00

113 lines
5.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.uniPagesJsonPlugin = exports.getNVueCssPaths = void 0;
const path_1 = __importDefault(require("path"));
const debug_1 = __importDefault(require("debug"));
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
const entry_1 = require("./entry");
const uni_i18n_1 = require("@dcloudio/uni-i18n");
const debugPagesJson = (0, debug_1.default)('uni:pages-json');
const nvueCssPathsCache = new Map();
function getNVueCssPaths(config) {
return nvueCssPathsCache.get(config);
}
exports.getNVueCssPaths = getNVueCssPaths;
function uniPagesJsonPlugin(options) {
let resolvedConfig;
const platform = process.env.UNI_PLATFORM;
const inputDir = process.env.UNI_INPUT_DIR;
return (0, uni_cli_shared_1.defineUniPagesJsonPlugin)((opts) => {
return {
name: 'uni:mp-pages-json',
enforce: 'pre',
configResolved(config) {
resolvedConfig = config;
},
transform(code, id) {
if (!opts.filter(id)) {
return null;
}
this.addWatchFile(path_1.default.resolve(inputDir, 'pages.json'));
(0, uni_cli_shared_1.getLocaleFiles)(path_1.default.resolve(inputDir, 'locale')).forEach((filepath) => {
this.addWatchFile(filepath);
});
const manifestJson = (0, uni_cli_shared_1.parseManifestJsonOnce)(inputDir);
const { appJson, pageJsons, nvuePages } = (0, uni_cli_shared_1.parseMiniProgramPagesJson)(code, platform, {
debug: !!manifestJson.debug,
darkmode: options.app.darkmode,
networkTimeout: manifestJson.networkTimeout,
subpackages: !!options.app.subpackages,
...options.json,
});
nvueCssPathsCache.set(resolvedConfig, nvuePages.map((pagePath) => pagePath + options.style.extname));
(0, uni_cli_shared_1.mergeMiniProgramAppJson)(appJson, manifestJson[platform]);
if (options.json?.formatAppJson) {
options.json.formatAppJson(appJson, manifestJson, pageJsons);
}
// 使用 once 获取的话,可以节省编译时间,但 i18n 内容发生变化时pages.json 不会自动更新
const i18nOptions = (0, uni_cli_shared_1.initI18nOptionsOnce)(platform, inputDir, false, true);
if (i18nOptions) {
const { locale, locales, delimiters } = i18nOptions;
(0, uni_i18n_1.parseI18nJson)(appJson, locales[locale], delimiters);
(0, uni_i18n_1.parseI18nJson)(pageJsons, locales[locale], delimiters);
}
const { normalize } = options.app;
(0, uni_cli_shared_1.addMiniProgramAppJson)(normalize ? normalize(appJson) : appJson);
Object.keys(pageJsons).forEach((name) => {
if (isNormalPage(name)) {
(0, uni_cli_shared_1.addMiniProgramPageJson)(name, pageJsons[name]);
}
});
return {
code: `import './${uni_cli_shared_1.MANIFEST_JSON_JS}'\n` + importPagesCode(appJson),
map: { mappings: '' },
};
},
generateBundle() {
(0, uni_cli_shared_1.findChangedJsonFiles)(options.app.usingComponents).forEach((value, key) => {
debugPagesJson('json.changed', key);
this.emitFile({
type: 'asset',
fileName: key + '.json',
source: value,
});
});
},
};
});
}
exports.uniPagesJsonPlugin = uniPagesJsonPlugin;
/**
* 字节跳动小程序可以配置 ext:// 开头的插件页面模板,如 ext://microapp-trade-plugin/order-confirm
* @param pagePath
* @returns
*/
function isNormalPage(pagePath) {
return !pagePath.startsWith('ext://');
}
function importPagesCode(pagesJson) {
const importPagesCode = [];
function importPageCode(pagePath) {
if (!isNormalPage(pagePath)) {
return;
}
const pagePathWithExtname = (0, uni_cli_shared_1.normalizePagePath)(pagePath, process.env.UNI_PLATFORM);
if (pagePathWithExtname) {
importPagesCode.push(`import('${(0, entry_1.virtualPagePath)(pagePathWithExtname)}')`);
}
}
pagesJson.pages.forEach((pagePath) => importPageCode(pagePath));
if (pagesJson.subPackages) {
pagesJson.subPackages.forEach(({ root, pages }) => {
pages &&
pages.forEach((pagePath) => importPageCode(path_1.default.join(root, pagePath)));
});
}
return `if(!Math){
${importPagesCode.join('\n')}
}`;
}