defineManifestConfig

声明应用 manifest.json 配置(name/appid/平台差异等)

defineManifestConfig() 用于描述应用的 manifest.json 配置(例如 name、appid、各平台差异化配置)。

Oiyo 会将该配置与内置默认预设(与 uni-app 官方预设一致)合并,生成最终的 src/manifest.json。

签名

defineManifestConfig(config: ManifestConfig): ManifestConfig

常用字段

属性类型默认值说明
namestring内置预设应用名称。
appidstring内置预设DCloud appid(uni-app 应用标识)。
descriptionstring内置预设应用描述。
versionNamestring内置预设版本名称。
versionCodestring内置预设版本号。
app-plusApp 配置内置预设App 平台配置(splashscreen、modules、distribute 等)。
mp-weixin 等各小程序平台配置内置预设各小程序平台差异化配置(mp-weixin、mp-alipay 等)。

所有平台配置项均有完整 TypeScript 类型提示,未覆盖的键由内置默认预设兜底。

默认预设内容

内置默认与 uni-app 官方预设 保持一致

使用位置

  • 文件:src/manifest.config.ts(与 manifest.json 同级)
  • 导出:默认导出
src/manifest.config.ts
import { defineManifestConfig } from "@skiyee/oiyo/config";

export default defineManifestConfig({
  name: "我的应用",
  appid: "__UNI__XXXXXX",

  // 平台配置:只写需要覆盖的键
  "mp-weixin": {
    appid: "wx1234567890",
  },
});

生成时机

命令行为
oiyo prepare仅生成/更新 manifest.json
oiyo dev开发时 watch 热更新,修改配置即时生效
oiyo build构建前同步
  • 内容未变化时跳过写入(不会触发无意义的文件变更)
  • 项目中不存在 manifest.config.* 时,manifest.json 不会被创建或修改

合并规则

合并优先级:你的配置 > 默认预设。合并器基于 defu,注意以下要点:

  • 对象逐键深合并:只写需要覆盖的键,同层其余键保留默认值
  • 数组整体覆盖:数组键一旦出现就完整替换默认数组(不追加),典型如 android 权限列表必须写完整
  • 空数组显式清空:permissions: [] 会清空默认权限列表
  • 标量直接覆盖:name、versionName 等以你的配置为准
  • 恢复默认:把对应键从 manifest.config.ts 中删掉,下次同步自动回落到默认预设
src/manifest.config.ts
export default defineManifestConfig({
  "app-plus": {
    distribute: {
      android: {
        // ★ 整体替换默认的 20+ 条权限,不会追加
        permissions: [
          '<uses-permission android:name="android.permission.CAMERA"/>',
          '<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>',
        ],
      },
    },
  },
});

环境变量

.env 与 .env.<模式>(如 .env.development、.env.production,模式由 --mode 命令决定)会被自动加载,配置模块中可直接读取:

src/manifest.config.ts
export default defineManifestConfig({
  appid: import.meta.env.UNI_APPID, // 或 process.env.UNI_APPID,两种写法均可
});

约束

  • src/manifest.json 是生成产物,不要手动修改——下次同步会被覆盖
  • 不需要覆盖时不要创建 manifest.config.ts,手写的 manifest.json 会保持原样
manifest.config.ts 文件的职责与边界(结构视角)
oiyo prepare:了解 manifest.json 的生成时机