manifest.config.ts

应用 manifest.json 配置入口

src/manifest.config.ts 用来描述应用配置,它的结构对应 UniApp 的 manifest.json。

职责

manifest.config.ts 用于表达"应用层面的 manifest.json 配置差异",比如 name、appid、各平台差异化配置(app-plus、mp-weixin 等)。

通常它会与内置默认预设(与 uni-app 官方预设一致)合并,最终生成 src/manifest.json。

约定

  • 推荐使用 defineManifestConfig() 导出配置,以获得完整 TypeScript 类型提示
  • 只写需要覆盖的键,未写的内容由默认预设兜底,不用手写完整 manifest.json
  • 支持在配置中直接读取环境变量(.env 与 .env.<模式> 会被自动加载)

结构示意(表达形状,不展开流程):

src/manifest.config.ts
import { defineManifestConfig } from "@skiyee/oiyo/config";

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

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

Oiyo 会在 oiyo prepare / dev / build 时自动同步该配置(dev 模式下 watch 热更新)。

进一步了解 defineManifestConfig 的合并规则与环境变量说明。
了解 manifest.json 的生成时机与产物行为。

边界

src/manifest.json 是由 Oiyo 生成/维护的产物文件,不要手动更改 manifest.json,直接更改 manifest.config.ts 就行。

export default defineManifestConfig({
  // 反例:数组键是整体覆盖而不是追加
  // 比如自定义 android 权限时,必须写完整列表
  "app-plus": {
    distribute: {
      android: {
        permissions: [
          '<uses-permission android:name="android.permission.CAMERA"/>',
        ],
      },
    },
  },
});

数组键(如 distribute.android.permissions)一旦在配置中出现,就会完整替换默认数组而不是拼接;写空数组则表示显式清空。恢复默认的做法是:把对应键从 manifest.config.ts 中删掉。

该 manifest.config.ts 与 manifest.json 形成映射的关系,manifest.json 是由 Oiyo 生成/维护的产物文件,不要手动更改 manifest.json,直接更改 manifest.config.ts 就行。项目中不存在 manifest.config.* 时,manifest.json 不会被创建或修改,手写的 json 保持原样。