uni-helper / vite-plugin-uni-pages

为 Vite 下的 uni-app 提供基于文件系统的路由
https://uni-helper.js.org/vite-plugin-uni-pages
MIT License
118 stars 16 forks source link

feat: 分包页面 subPackages 配置支持 #73

Closed hairyf closed 1 year ago

hairyf commented 1 year ago

对问题的清晰和简明的描述

具有分包的自动导入页面:

import { defineConfig } from 'vite'
import UniPages from '@uni-helper/vite-plugin-uni-pages'

export default defineConfig({
  plugins: [
    UniPages({
      subPackages: ['sub-package-1', 'sub-package-2']
    })
  ],
})
- src/sub-package-1
  - page1/index.vue
  - page2/index.vue
- src/sub-package-2
  - page1/index.vue
  - page2/index.vue

推荐的解决方案

在 context 模块中添加 subPageMetaData:

class PageContext {
   //...
   subPageMetaData: Record<string, PageMetaDatum[]> = {}
}

其中 key 是子包 root,value 是子包的 pages

在 updatePagesJSON 上处理子包的更新

updatePagesJSON() {
    // ...
    await this.mergePageMetaData()
    await this.mergeSubPageMetaData()
    const subPackages = Object.keys(this.subPageMetaData)
      .map(root => [{ root, pages: this.subPageMetaData[root] }])
    const pagesJson = JSON.stringify({
      ...this.pagesGlobConfig,
      pages: this.pageMetaData,
      subPackages
    }, null, this.options.minify ? undefined : 2)

   // ...
}

替代方案

额外上下文

-

检查