Skip to content

体积与分包策略(Web + 微信小程序)

Web 管理端(frontend/

原则:适度 vendor 分包 + 路由懒加载,不追求把警告压到 0。

手段位置说明
路由懒加载src/router/route-component-registry.ts各业务页 () => import(...),按访问加载
Vendor 分包frontend/vite.config.tsbuild.rollupOptions.output.manualChunksnaive-uiechartsapp-vendor(vue/pinia/router/i18n)、vicons
警告阈值chunkSizeWarningLimit: 1024管理端单 chunk 超 500kB 常见;已拆 vendor 后仅降噪

注意:登出清动态路由走静态模块 src/lib/auth-logout-cleanup.ts;勿在 auth 里对已在 main.ts 加载的 router / permission-routes 再写 import()(构建会报 INEFFECTIVE_DYNAMIC_IMPORT)。web-openid-refreshauth store 保留一处 import() 用于打破环依赖,属正常。

本地构建:

bash
pnpm --filter frontend run build

微信小程序(miniapp/

原则:体积靠 pages.jsonsubPackages(业务分包),不靠 Vite 的 JS chunk 拆分。

主包(pages

仅保留启动与 tabBar 必需页:

  • pages/index/index(首页)
  • pages/login/login
  • pages/me/profilepages/notify/worker-notifications(自定义 tabBar,必须在主包

业务分包(subPackages

nameroot场景
pkg-mepages/me-sub个人信息、账号、人员认证
pkg-bookkeepingpages/bookkeeping个人记账
pkg-config-quotepages/config-quote清单计价
pkg-workerpages/worker工人记工、报工登记
pkg-recorderpages/recorder生产、入出库、库存、报工审核
pkg-managerpages/manager结算、发放、报表

新增业务页:优先放进对应 subPackages,不要堆进主包 pages

CI 门禁

bash
pnpm run check:miniapp:weixin

主包须 < 2048KBscripts/verify-miniapp-main-package.mjs,分包目录从 pages.json 自动读取)。

与 Web 的差异

  • 微信 tabBar 页不能迁到分包
  • H5 构建时的 Vite chunk 警告不代表小程序主包体积,以 check:miniapp:weixin 为准。

TaskFlow 内部文档 Released under the MIT License.