diff --git a/packages/uni-cli-shared/src/json/mp/types.ts b/packages/uni-cli-shared/src/json/mp/types.ts index c63d57a731be636c8cc8dc559962fede4844fc9b..257e9dc8a201a0a652da7785dbdf9420d01ddd57 100644 --- a/packages/uni-cli-shared/src/json/mp/types.ts +++ b/packages/uni-cli-shared/src/json/mp/types.ts @@ -125,4 +125,5 @@ export interface AppJson { lazyCodeLoading?: 'requiredComponents' | string singlePage?: SinglePage restartStrategy?: RestartStrategy + [name: string]: unknown } diff --git a/packages/uni-mp-alipay/dist/uni.compiler.js b/packages/uni-mp-alipay/dist/uni.compiler.js index 41507f601ce51e73e8d93b8ab6f4ea3233354b15..727a72dac34c1cfa0a57ff5c9b13075c6d39d9e6 100644 --- a/packages/uni-mp-alipay/dist/uni.compiler.js +++ b/packages/uni-mp-alipay/dist/uni.compiler.js @@ -221,6 +221,11 @@ const options = { darkmode: false, subpackages: true, plugins: true, + normalize(appJson) { + // 支付宝小程序默认主包,分包 js 模块不共享,会导致 getCurrentInstance,setCurrentInstance 不一致 + appJson.subPackageBuildType = 'shared'; + return appJson; + }, }, project: { filename: projectConfigFilename, diff --git a/packages/uni-mp-alipay/src/compiler/options.ts b/packages/uni-mp-alipay/src/compiler/options.ts index e45b30ef1c97ecf44b068e3059ee4b8a3a82ef2d..f8948fb76031026d2ff0bcbaeac7dc0da0cb0842 100644 --- a/packages/uni-mp-alipay/src/compiler/options.ts +++ b/packages/uni-mp-alipay/src/compiler/options.ts @@ -102,6 +102,11 @@ export const options: UniMiniProgramPluginOptions = { darkmode: false, subpackages: true, plugins: true, + normalize(appJson) { + // 支付宝小程序默认主包,分包 js 模块不共享,会导致 getCurrentInstance,setCurrentInstance 不一致 + appJson.subPackageBuildType = 'shared' + return appJson + }, }, project: { filename: projectConfigFilename, diff --git a/packages/uni-mp-vite/src/plugin/index.ts b/packages/uni-mp-vite/src/plugin/index.ts index 9a4fdf156fc9fd2910a709e06840f255de9dcdf1..8e87656cdbcd6a189b772f6cb60f82de12cc8b62 100644 --- a/packages/uni-mp-vite/src/plugin/index.ts +++ b/packages/uni-mp-vite/src/plugin/index.ts @@ -10,6 +10,7 @@ import { MiniProgramCompilerOptions, initPostcssPlugin, parseRpx2UnitOnce, + AppJson, } from '@dcloudio/uni-cli-shared' import type { SFCDescriptor, @@ -58,6 +59,7 @@ export interface UniMiniProgramPluginOptions { * 是否支持发行插件 */ plugins?: boolean + normalize?: (appJson: AppJson) => AppJson } project?: { filename: string diff --git a/packages/uni-mp-vite/src/plugins/pagesJson.ts b/packages/uni-mp-vite/src/plugins/pagesJson.ts index 618e446bfc8326128b1ef871c14433832b6e8d42..a3655e554922f13bdb58d2710ad9f7ca3d142c64 100644 --- a/packages/uni-mp-vite/src/plugins/pagesJson.ts +++ b/packages/uni-mp-vite/src/plugins/pagesJson.ts @@ -69,7 +69,8 @@ export function uniPagesJsonPlugin( if (options.json?.formatAppJson) { options.json.formatAppJson(appJson, manifestJson, pageJsons) } - addMiniProgramAppJson(appJson) + const { normalize } = options.app + addMiniProgramAppJson(normalize ? normalize(appJson) : appJson) Object.keys(pageJsons).forEach((name) => { addMiniProgramPageJson(name, pageJsons[name]) })