From de877b716733cc97e4dfda72b411886b2919297b Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Mon, 2 Aug 2021 19:56:04 +0800 Subject: [PATCH] wip(app): subNVue --- packages/shims-uni-app.d.ts | 7 ++++++ .../src/webpack/config/optimization.ts | 1 + .../uni-cli-shared/src/json/app/pages/nvue.ts | 22 ++++++++++++++----- packages/uni-cli-shared/src/json/pages.ts | 19 ++++++++++++++++ packages/uni-h5-vite/src/index.ts | 1 - 5 files changed, 44 insertions(+), 6 deletions(-) diff --git a/packages/shims-uni-app.d.ts b/packages/shims-uni-app.d.ts index a0e60b602..4bea03a21 100644 --- a/packages/shims-uni-app.d.ts +++ b/packages/shims-uni-app.d.ts @@ -161,6 +161,12 @@ declare namespace UniApp { 'quickapp-webview-union'?: PagesJsonPageStyle } + interface PagesJsonPageStyleSubNVue { + id?: string + path: string + type: 'popup' | 'navigationBar' + style?: unknown + } interface PagesJsonPageStyle extends PagesJsonPagePlatformStyle { isNVue?: boolean disableScroll?: boolean @@ -174,6 +180,7 @@ declare namespace UniApp { // app-plus animationType?: string animationDuration?: number + subNVues?: PagesJsonPageStyleSubNVue[] } interface PageRouteMeta extends PagesJsonPageStyle { id?: number diff --git a/packages/uni-cli-nvue/src/webpack/config/optimization.ts b/packages/uni-cli-nvue/src/webpack/config/optimization.ts index fddb2499a..3967af32c 100644 --- a/packages/uni-cli-nvue/src/webpack/config/optimization.ts +++ b/packages/uni-cli-nvue/src/webpack/config/optimization.ts @@ -5,6 +5,7 @@ export function createOptimization(): Configuration['optimization'] { return { nodeEnv: false, // 禁用,由 define 统一设置 moduleIds: 'deterministic', + chunkIds: 'deterministic', minimizer: [ new TerserPlugin({ terserOptions: { diff --git a/packages/uni-cli-shared/src/json/app/pages/nvue.ts b/packages/uni-cli-shared/src/json/app/pages/nvue.ts index d17afc282..f61a5fa83 100644 --- a/packages/uni-cli-shared/src/json/app/pages/nvue.ts +++ b/packages/uni-cli-shared/src/json/app/pages/nvue.ts @@ -1,15 +1,27 @@ import fs from 'fs' import path from 'path' -import { normalizePath } from '../../../utils' +import { normalizePath, removeExt } from '../../../utils' export function initWebpackNVueEntry(pages: UniApp.PagesJsonPageOptions[]) { process.UNI_NVUE_ENTRY = {} - pages.forEach((page) => { - if (page.style.isNVue) { - process.UNI_NVUE_ENTRY[page.path] = genWebpackBase64Code( - genNVueEntryCode(page.path) + pages.forEach(({ path, style: { isNVue, subNVues } }) => { + if (isNVue) { + process.UNI_NVUE_ENTRY[path] = genWebpackBase64Code( + genNVueEntryCode(path) ) } + if (!Array.isArray(subNVues)) { + return + } + subNVues.forEach(({ path }) => { + if (!path) { + return + } + const subNVuePath = removeExt(path.split('?')[0]) + process.UNI_NVUE_ENTRY[subNVuePath] = genWebpackBase64Code( + genNVueEntryCode(subNVuePath) + ) + }) }) } diff --git a/packages/uni-cli-shared/src/json/pages.ts b/packages/uni-cli-shared/src/json/pages.ts index fe202abe7..064e1c1e7 100644 --- a/packages/uni-cli-shared/src/json/pages.ts +++ b/packages/uni-cli-shared/src/json/pages.ts @@ -94,6 +94,7 @@ function normalizeSubpackages( if (root && subPages.length) { subPages.forEach((subPage) => { subPage.path = normalizePath(path.join(root, subPage.path)) + subPage.style = normalizeSubpackageSubNVues(root, subPage.style) pages.push(subPage) }) } @@ -102,6 +103,24 @@ function normalizeSubpackages( return pages } +function normalizeSubpackageSubNVues( + root: string, + style: UniApp.PagesJsonPageStyle +) { + const platformStyle = style['app'] || style['app-plus'] + if (!platformStyle) { + return style + } + if (Array.isArray(platformStyle.subNVues)) { + platformStyle.subNVues.forEach((subNVue) => { + if (subNVue.path) { + subNVue.path = normalizePath(path.join(root, subNVue.path)) + } + }) + } + return style +} + function normalizePageStyle( pagePath: string | null, pageStyle: UniApp.PagesJsonPageStyle | undefined, diff --git a/packages/uni-h5-vite/src/index.ts b/packages/uni-h5-vite/src/index.ts index 0577f7548..c1e4d9fb6 100644 --- a/packages/uni-h5-vite/src/index.ts +++ b/packages/uni-h5-vite/src/index.ts @@ -1,6 +1,5 @@ import fs from 'fs' import path from 'path' -import { ResolvedConfig } from 'vite' import { isInHBuilderX, UniVitePlugin } from '@dcloudio/uni-cli-shared' import { uniCssPlugin } from './plugins/css' import { uniCssScopedPlugin } from './plugins/cssScoped' -- GitLab