Skip to content

app.json

app.json 是小程序全局配置文件,用于配置小程序的一些全局属性和页面路由。

json
{
  // 页面路径列表
  "pages": ["pages/index/index", "pages/logs/index"],
  // 分包结构配置
  "subpackages": [
    {
      "name": "subpackage",
      "root": "subpackage",
      "pages": ["pages/subpage/index"]
    }
  ],
  // 分包预下载规则
  "preloadRule": {
    "pages/index/index": {
      "network": "wifi",
      "packages": ["subpackage"]
    }
  },
  // 全局的默认窗口表现
  "window": {
    "navigationBarTitleText": "Demo"
  },
  // 底部 tab 栏的表现
  "tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页"
      },
      {
        "pagePath": "pages/logs/index",
        "text": "日志"
      }
    ]
  },
  // 指定使用升级后的weui样式
  "style": "v2",
  // 是否开启 debug 模式,默认关闭
  "debug": true
}

entryPagePath

指定小程序的默认启动路径(首页),常见情景是从微信聊天列表页下拉启动、小程序列表启动等。如果不填,将默认为 pages 列表的第一项。不支持带页面路径参数。

json
{
  "entryPagePath": "pages/index/index"
}

pages

pages 是一个数组,指定了小程序的页面路径。

json
{
  "pages": ["pages/index/index", "pages/logs/index"]
}

subpackages

subpackages 是一个数组,指定了小程序的分包结构。

json
{
  "subpackages": [
    {
      "name": "subpackage",
      "root": "subpackage",
      "pages": ["pages/subpage/index"]
    }
  ]
}

preloadRule

preloadRule 是一个对象,指定了分包预下载规则。

json
{
  "preloadRule": {
    "pages/index/index": {
      "network": "wifi",
      "packages": ["subpackage"]
    }
  }
}

window

window 是一个对象,用于设置小程序的状态栏、导航条、标题、窗口背景色。

json
{
  "window": {
    "navigationBarTitleText": "Demo"
  }
}

tabBar

tabBar 是一个对象,如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。

如果需要自定义 tabBar,参考 custom-tab-bar

json
{
  "tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页",
        "iconPath": "assets/home.png",
        "selectedIconPath": "assets/home_active.png"
      },
      {
        "pagePath": "pages/logs/index",
        "text": "日志",
        "iconPath": "assets/logs.png",
        "selectedIconPath": "assets/logs_active.png"
      }
    ]
  }
}

style

style 是一个字符串,指定了使用升级后的 weui 样式。

json
{
  "style": "v2"
}

一般会删除 app.json 中的 style 字段,使用默认样式。

requiredPrivateInfos

requiredPrivateInfos 是一个数组,指定了小程序需要获取的用户隐私信息类型。

json
/* prettier-ignore */
{
  "requiredPrivateInfos": [ 
    "getLocation",
    "onLocationChange",
    "startLocationUpdateBackground",
    "chooseAddress"
  ]
}

注:若使用以上接口,均需在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通该接口权限。

permission

permission 是一个对象,指定了小程序需要获取的用户权限。

json
{
  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示" // 高速公路行驶持续后台定位
    }
  }
}

resolveAlias

使用 resolveAlias 配置项用来自定义模块路径的映射规则。

如果命中多条映射规则,则取最长的命中规则。

json
{
  "resolveAlias": {
    "~/*": "/*",
    "~/origin/*": "origin/*",
    "@utils/*": "utils/*",
    "subBUtils/*": "subpackageB/utils/*"
  }
}

注意:

  1. resolveAlias 进行的是路径匹配,其中的 key 和 value 须以 /* 结尾。

    配置了上述路径映射规则,会做如下匹配并转换:

    • ~/mod.js -> mod.js
    • ~/origin/mod.js -> origin/mod.js
    • @utils/mod.js -> utils/mod.js
    • subBUtils/mod.js -> subpackageB/utils/mod.js
  2. 如果在 project.config.json 中指定了 miniprogramRoot,则 /* 指代的根目录是 miniprogramRoot 对应的路径,而不是开发者工具项目的根目录

跨端框架备注

基于 MIT 许可发布