| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- "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')}
- }`;
- }
|