diff --git a/packages/uni-app-vite/src/nvue/index.ts b/packages/uni-app-vite/src/nvue/index.ts index 50b9c17dcbaabeb3dd76c0656343a341fb2247f5..d96e57159d46bd073dba565ff682a1193a9bba91 100644 --- a/packages/uni-app-vite/src/nvue/index.ts +++ b/packages/uni-app-vite/src/nvue/index.ts @@ -23,9 +23,9 @@ export function initNVuePlugins() { uniAppCssPlugin(), uniEasycomPlugin({ exclude: UNI_EASYCOM_EXCLUDE }), uniHBuilderXConsolePlugin(), - uniMainJsPlugin({ appService }), - ...(appService ? [uniManifestJsonPlugin()] : []), - uniPagesJsonPlugin({ appService }), + uniMainJsPlugin({ renderer, appService }), + uniManifestJsonPlugin(), + uniPagesJsonPlugin({ renderer, appService }), uniViteInjectPlugin('uni:app-inject', initAppProvide()), uniStatsPlugin(), uniAppNVuePlugin({ appService }), diff --git a/packages/uni-app-vite/src/nvue/plugin/index.ts b/packages/uni-app-vite/src/nvue/plugin/index.ts index 120028f1b63988f14ead54ac5653d6fca3990e82..8c62444fa9f19778bcd0425f2f02d7c4fe393d15 100644 --- a/packages/uni-app-vite/src/nvue/plugin/index.ts +++ b/packages/uni-app-vite/src/nvue/plugin/index.ts @@ -73,7 +73,7 @@ export function uniAppNVuePlugin({ }, outDir: nvueOutDir(appService), rollupOptions: { - external, + external: external(appService), output: { entryFileNames(chunk) { if (chunk.name === 'main') { @@ -83,8 +83,8 @@ export function uniAppNVuePlugin({ }, assetFileNames: '[name][extname]', chunkFileNames: createChunkFileNames(inputDir), - plugins: [dynamicImportPolyfill()], - globals, + plugins: [dynamicImportPolyfill(true)], + globals: globals(appService), }, }, }, diff --git a/packages/uni-app-vite/src/nvue/plugins/esbuild.ts b/packages/uni-app-vite/src/nvue/plugins/esbuild.ts index ecb04f94be96058c83f26d7572712538f922a0fe..317148ba8b0696cb34560e6d2cd2ad55df137012 100644 --- a/packages/uni-app-vite/src/nvue/plugins/esbuild.ts +++ b/packages/uni-app-vite/src/nvue/plugins/esbuild.ts @@ -37,7 +37,7 @@ export function uniEsbuildPlugin({ }, bundle: true, write: false, - plugins: [esbuildGlobalPlugin(esbuildGlobals)], + plugins: [esbuildGlobalPlugin(esbuildGlobals(appService))], } }, async writeBundle(_, bundle) { diff --git a/packages/uni-app-vite/src/nvue/plugins/mainJs.ts b/packages/uni-app-vite/src/nvue/plugins/mainJs.ts index d6305ae4c849ed4ee79e747d6e37f201006e7f25..d619a177769bca1c7053f2317196ec8770b025da 100644 --- a/packages/uni-app-vite/src/nvue/plugins/mainJs.ts +++ b/packages/uni-app-vite/src/nvue/plugins/mainJs.ts @@ -1,19 +1,31 @@ import { defineUniMainJsPlugin, PAGES_JSON_JS } from '@dcloudio/uni-cli-shared' import { APP_CSS_JS } from './appCss' -export function uniMainJsPlugin({ appService }: { appService: boolean }) { +export function uniMainJsPlugin({ + renderer, + appService, +}: { + renderer?: 'native' + appService: boolean +}) { return defineUniMainJsPlugin((opts) => { return { name: 'uni:app-nvue-main-js', enforce: 'pre', transform(code, id) { if (opts.filter(id)) { - if (appService) { - code = code.includes('createSSRApp') - ? createApp(code) - : createLegacyApp(code) + if (renderer) { + if (appService) { + code = code.includes('createSSRApp') + ? createApp(code) + : createLegacyApp(code) + return { + code, + map: { mappings: '' }, + } + } return { - code, + code: `import './${PAGES_JSON_JS}';`, map: { mappings: '' }, } } @@ -31,7 +43,7 @@ function createApp(code: string) { return `${code.replace( 'createSSRApp', 'createVueApp as createSSRApp' - )};const __app__=createApp().app;__app__._component.mpType='app';__app__._component.render=()=>{};__app__.mount("#app");` + )};const {app:__app__,Vuex:__Vuex__,Pinia:__Pinia__}=createApp();uni.Vuex=__Vuex__;uni.Pinia=__Pinia__;__app__._component.mpType='app';__app__._component.render=()=>{};__app__.mount("#app");` } function createLegacyApp(code: string) { diff --git a/packages/uni-app-vite/src/nvue/plugins/pagesJson.ts b/packages/uni-app-vite/src/nvue/plugins/pagesJson.ts index 50d3f1a77eb0a92f3580a4e654b8c5860c9e9d5f..303bbe5db3540a9140816ad325ed72ad48e1dbdd 100644 --- a/packages/uni-app-vite/src/nvue/plugins/pagesJson.ts +++ b/packages/uni-app-vite/src/nvue/plugins/pagesJson.ts @@ -12,8 +12,10 @@ import { } from '@dcloudio/uni-cli-shared' export function uniPagesJsonPlugin({ + renderer, appService, }: { + renderer?: 'native' appService: boolean }): Plugin { return defineUniPagesJsonPlugin((opts) => { @@ -38,7 +40,7 @@ export function uniPagesJsonPlugin({ ) } }) - if (appService) { + if (renderer === 'native' && !appService) { this.emitFile({ fileName: `app-config-service.js`, type: 'asset', diff --git a/packages/uni-app-vite/src/nvue/utils.ts b/packages/uni-app-vite/src/nvue/utils.ts index 2f4aa10a2584c127f0d632be232d30acf1dde042..4ca00ec6ba397a28e0144d2bf8ddf68529aac384 100644 --- a/packages/uni-app-vite/src/nvue/utils.ts +++ b/packages/uni-app-vite/src/nvue/utils.ts @@ -1,11 +1,23 @@ -export const external = ['vue', 'vuex'] -export const globals = { - vue: 'Vue', - vuex: 'Vuex', - pinia: 'Pinia', +export function external(appService: boolean) { + return appService ? ['vue'] : ['vue', 'vuex'] } -export const esbuildGlobals = { - vue: 'Vue', - vuex: 'uni.Vuex', - pinia: 'uni.Pinia', +export function globals(appService: boolean): { [name: string]: string } { + return appService + ? { vue: 'Vue' } + : { + vue: 'Vue', + vuex: 'Vuex', + pinia: 'Pinia', + } +} +export function esbuildGlobals(appService: boolean): { + [name: string]: string +} { + return appService + ? { vue: 'Vue' } + : { + vue: 'Vue', + vuex: 'uni.Vuex', + pinia: 'uni.Pinia', + } } diff --git a/packages/uni-cli-shared/src/vite/plugins/dynamicImportPolyfill.ts b/packages/uni-cli-shared/src/vite/plugins/dynamicImportPolyfill.ts index d31242e897b29c5a9aa3f98564537ecb5639aeb9..c7ba46034445932419d8312778a720a9ec74b22b 100644 --- a/packages/uni-cli-shared/src/vite/plugins/dynamicImportPolyfill.ts +++ b/packages/uni-cli-shared/src/vite/plugins/dynamicImportPolyfill.ts @@ -1,10 +1,10 @@ import type { Plugin } from 'vite' -export function dynamicImportPolyfill(): Plugin { +export function dynamicImportPolyfill(promise: boolean = false): Plugin { return { name: 'dynamic-import-polyfill', renderDynamicImport() { return { - left: '(', + left: promise ? 'Promise.resolve(' : '(', right: ')', } },