defineManifestConfig
声明应用 manifest.json 配置(name/appid/平台差异等)
defineManifestConfig() 用于描述应用的 manifest.json 配置(例如 name、appid、各平台差异化配置)。
Oiyo 会将该配置与内置默认预设(与 uni-app 官方预设一致)合并,生成最终的 src/manifest.json。
签名
defineManifestConfig(config: ManifestConfig): ManifestConfig
常用字段
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name | string | 内置预设 | 应用名称。 |
appid | string | 内置预设 | DCloud appid(uni-app 应用标识)。 |
description | string | 内置预设 | 应用描述。 |
versionName | string | 内置预设 | 版本名称。 |
versionCode | string | 内置预设 | 版本号。 |
app-plus | App 配置 | 内置预设 | 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会保持原样