Skip to content

共享配置

除了 WXML/WXS 这些“底层开关”,weapp-vite 还有一些通用增强能力:比如自动路由、调试钩子等。这页主要讲:

  • weapp.autoRoutes:不想手写 app.json.pages 时怎么做
  • weapp.debug:遇到“为什么没扫描到 / 为什么没输出”时怎么定位

组件自动导入已经拆到 自动导入组件配置 单独说明。

weapp.autoRoutes

  • 类型boolean
  • 默认值false
  • 适用场景
    • 希望从目录结构自动生成 pages 清单,不再手动维护 app.json.pages
    • 希望在 TypeScript 里拿到“页面路径”的类型提示,避免字符串拼错。

配置示例

ts
import { defineConfig } from 'weapp-vite/config'

export default defineConfig({
  weapp: {
    autoRoutes: true,
  },
})

开启后 weapp-vite 会:

  • 持续扫描主包和分包下的页面目录,维护 routesentriespagessubPackages 等清单;
  • 在配置文件同级输出 typed-router.d.ts,提供 AutoRoutes 等类型;
  • 自动暴露虚拟模块 weapp-vite/auto-routes,支持在代码中直接导入最新的路由数据。

WARNING

自动路由依赖约定式目录结构:默认匹配 pages/**/indexpages/**/main。如果你的页面文件命名不同,请按需配置 include / exclude,详见 自动路由指南

weapp.debug

  • 类型
    ts
    {
      watchFiles?: (files: string[], meta?: SubPackageMetaValue) => void
      resolveId?: (id: string, meta?: SubPackageMetaValue) => void
      load?: (id: string, meta?: SubPackageMetaValue) => void
      inspect?: WrapPluginOptions
    }
  • 适用场景:排查“监听了哪些文件”“模块是怎么解析的”“某个文件有没有走到预期插件”“产物为什么没生成”等问题。

调试示例

ts
export default defineConfig({
  weapp: {
    debug: {
      watchFiles(files, meta) {
        const scope = meta?.subPackage.root ?? 'main'
        console.info(`[watch:${scope}]`, files)
      },
      resolveId(id) {
        if (id.includes('lodash')) {
          console.log('[resolveId]', id)
        }
      },
      load(id) {
        if (id.endsWith('.wxml')) {
          console.log('[load wxml]', id)
        }
      },
      inspect: { build: true },
    },
  },
})
  • watchFiles: 构建结束时返回监听到的文件,可区分主包与分包。
  • resolveId: 追踪模块解析路径,适合定位别名、入口解析或分包引用问题。
  • load: 监听模块加载,常用于确认模板、脚本等是否经过预期的转换。
  • inspect: 启用 vite-plugin-inspect,在浏览器中观察插件顺序与产物。

常见调试技巧

  1. 确认分包有没有参与构建:用 watchFiles 看看独立分包的 miniprogram_npm 是否生成、文件是否被监听到。
  2. 定位构建卡顿:在 resolveId / load 里打时间戳,快速找出慢的模块或目录。
  3. 排查组件自动导入:组件没被识别时,先确认 .json 是否包含 component: true,再看 autoImportComponents.globs 是否命中。

weapp.wevu.defaults

  • 类型WevuDefaults
  • 作用:在编译 app.vue 时自动注入 setWevuDefaults(),统一控制 wevu 的 createApp/defineComponent 默认值。
  • 适用场景
    • 希望全局配置 setData 策略(例如 includeComputed / strategy)。
    • 希望统一小程序 Component 选项默认值(例如 options.addGlobalClass)。

配置示例

ts
import { defineConfig } from 'weapp-vite/config'

export default defineConfig({
  weapp: {
    wevu: {
      defaults: {
        app: {
          setData: {
            includeComputed: false,
            strategy: 'patch',
          },
        },
        component: {
          options: {
            addGlobalClass: true,
          },
          setData: {
            strategy: 'patch',
          },
        },
      },
    },
  },
})

注意事项

  • 仅对 app.vue 生效:weapp-vite 会在编译产物中插入 setWevuDefaults(),并确保它在 createApp() 之前执行。
  • 配置必须可序列化(JSON 兼容):不支持函数、Symbol、循环引用。
  • 局部显式配置会覆盖默认值;setDataoptions 会做浅合并,其余字段按对象顶层合并。
  • 若你希望手动控制时机,可以在 app.vue 顶层显式调用 setWevuDefaults(),并关闭此配置以避免重复注入。
  • app.vue/组件导出为对象字面量时,weapp-vite 会把默认值直接合并进编译产物,方便排查与调试;若导出是变量或函数,仍会回落到运行时合并。
  • 若设置了 component.options.virtualHost = true,weapp-vite 会在 页面 入口自动补上 virtualHost: false,避免页面虚拟节点导致的渲染层错误;需要为页面开启时请在页面内显式配置。

TIP

如果你不通过 weapp-vite 构建,也可以在运行时手动调用 setWevuDefaults()(见 /wevu/runtime)。

weapp.hmr.sharedChunks

  • 类型'full' | 'auto' | 'off'
  • 默认值'full'
  • 适用场景:开发态 HMR 时控制共享 chunk 的重建策略。
ts
import { defineConfig } from 'weapp-vite/config'

export default defineConfig({
  weapp: {
    hmr: {
      sharedChunks: 'auto',
    },
  },
})
  • full: 每次更新都重新产出全部 entry(最稳、最慢)。
  • auto: 只在共享 chunk 可能被覆盖时回退 full(折中)。
  • off: 仅更新变更 entry(最快,但可能导致共享 chunk 导出不一致)。

weapp.chunks

  • 类型ChunksConfig
  • 适用场景:控制跨分包共享代码如何输出,降低重复体积或减少主包依赖。
ts
import { defineConfig } from 'weapp-vite/config'

export default defineConfig({
  weapp: {
    chunks: {
      sharedStrategy: 'duplicate',
      logOptimization: true,
      forceDuplicatePatterns: ['components/**', /legacy\//],
      duplicateWarningBytes: 512 * 1024,
    },
  },
})

字段说明:

  • sharedStrategy: duplicate(默认)复制到各分包,或 hoist 提到主包。
  • logOptimization: 输出分包优化日志,帮助确认复制/回退位置。
  • forceDuplicatePatterns: 强制按分包复制的模块匹配规则(字符串或正则)。
  • duplicateWarningBytes: 冗余体积超过阈值时发出警告;设置为 0 关闭。

关联阅读

  • WXML 配置:了解模板增强与组件扫描的协作方式。
  • WXS 配置:掌握脚本增强开关与调试方法。
  • npm 配置:在调试过程中同时控制 npm 构建策略。

Released under the MIT License.