diff --git a/packages/uni-cli-shared/src/json/mp/index.ts b/packages/uni-cli-shared/src/json/mp/index.ts index a73135cb7f48bb2f7c6cda337f2f920095bfba2d..377f19ce33aecf24db8e9cfc260776ce3faab431 100644 --- a/packages/uni-cli-shared/src/json/mp/index.ts +++ b/packages/uni-cli-shared/src/json/mp/index.ts @@ -1,4 +1,4 @@ export * from './jsonFile' export { AppJson } from './types' -export { parseMiniProgramPagesJson } from './pages' +export { mergeMiniProgramAppJson, parseMiniProgramPagesJson } from './pages' export { parseMiniProgramProjectJson } from './project' diff --git a/packages/uni-cli-shared/src/json/mp/pages.ts b/packages/uni-cli-shared/src/json/mp/pages.ts index 063f4fc34f939e9e56514c0b4617c0b2f1ed8ea2..23dac94cef819c0595c35ee1f08d29509f5b85b9 100644 --- a/packages/uni-cli-shared/src/json/mp/pages.ts +++ b/packages/uni-cli-shared/src/json/mp/pages.ts @@ -6,6 +6,7 @@ import { validatePages } from '../pages' import { AppJson, NetworkTimeout, PageWindowOptions } from './types' import { parseTabBar, parseWindowOptions } from './utils' import { normalizePath } from '../../utils' +import { isMiniProgramProjectJsonKey } from './project' interface ParsePagesJsonOptions { debug?: boolean @@ -25,6 +26,20 @@ export function parseMiniProgramPagesJson( return parsePagesJson(jsonStr, platform, options) } +export function mergeMiniProgramAppJson( + appJson: Record, + platformJson: Record = {} +) { + Object.keys(platformJson).forEach((name) => { + if ( + !isMiniProgramProjectJsonKey(name) && + !['usingComponents', 'optimization'].includes(name) + ) { + appJson[name] = platformJson[name] + } + }) +} + function parsePagesJson( jsonStr: string, platform: UniApp.PLATFORM, diff --git a/packages/uni-cli-shared/src/json/mp/project.ts b/packages/uni-cli-shared/src/json/mp/project.ts index 3f245bd246ac9e35c3cfdd013dd3bc4dba5e389b..ea6affc7fb61d4f15c8089f998fd902406ad5b66 100644 --- a/packages/uni-cli-shared/src/json/mp/project.ts +++ b/packages/uni-cli-shared/src/json/mp/project.ts @@ -24,6 +24,10 @@ const projectKeys = [ 'cloudbaseRoot', ] +export function isMiniProgramProjectJsonKey(name: string) { + return projectKeys.includes(name) +} + export function parseMiniProgramProjectJson( jsonStr: string, platform: UniApp.PLATFORM, diff --git a/packages/uni-mp-vite/src/plugins/pagesJson.ts b/packages/uni-mp-vite/src/plugins/pagesJson.ts index 55f16b6d654bdd444258827f0fffa760091c97b8..4d6903a956d4de94904b32c2802a42532d8f19fe 100644 --- a/packages/uni-mp-vite/src/plugins/pagesJson.ts +++ b/packages/uni-mp-vite/src/plugins/pagesJson.ts @@ -12,6 +12,7 @@ import { addMiniProgramPageJson, addMiniProgramAppJson, findChangedJsonFiles, + mergeMiniProgramAppJson, } from '@dcloudio/uni-cli-shared' import { virtualPagePath } from './entry' import { UniMiniProgramPluginOptions } from '../plugin' @@ -61,6 +62,9 @@ export function uniPagesJsonPlugin( resolvedConfig, nvuePages.map((pagePath) => pagePath + options.style.extname) ) + + mergeMiniProgramAppJson(appJson, manifestJson[process.env.UNI_PLATFORM]) + if (options.json?.formatAppJson) { options.json.formatAppJson(appJson, manifestJson, pageJsons) }