开发

构建参数配置(Swan-Prop)

1 简介

小程序编译配置文件,用于参数化控制 Nest 插件的编译逻辑。

支持配置合并优先级和影子文件:

  • 配置合并优先级:配置项优先级按文件的读取顺序文件依次提高,后加载的配置文件优先级更高,同一配置文件中的相同配置项,后者优先级更高。
  • 影子文件:每个配置文件都支持一个以”.local.”为前缀的影子文件,如:swan.properties 的影子文件 “.local.swan.properties”,当配置文件的存在影子文件时,影子文件优先级相当于自身,但高于自身

2 配置定义

目前主要有三类配置文件:

  • 主要配置文件,如:swan.properties
  • 源码集配置文件,如:home.properties、version.properties
  • 模块集配置文件,如:modules.properties

下面介绍各类配置文件定义。

2.1 主要配置文件

所有主要配置文件的配置项将按照优先级合并,共同用于控制小程序框架以及 Nest 插件自身的编译逻辑,如:组件仓库认证信息、组件发布控制等。

常见文件名:

  • swan.properties
  • versions.properties

约定读取位置及优先级(优先级随序号递增):

  1. Nest 插件 buildin 资源文件 - 组件版本配置,既:Nest 工程下 shared 目录中的 versions.properties 文件
  2. Nest 插件 buildin 资源文件 - 一般编译配置,既:Nest 工程下 shared 目录中的 swan.properties 文件
  3. 工程根目录配置文件,既:宿主工程根目录下的 swan.properties 文件,例如:Demo 和 Nest 根目录
  4. 此上述配置文件中,“SWAN_EXTRA_PROPS”字段配置的自定义文件路径
  5. 系统全局配置文件,既:操作系统 home 目录下 .swan 隐藏目录中的 swan.properties 文件(~/.swan/swan.properties)
  6. 参与编译的源码集、模块集根目录下的 swan.properties 配置文件,如:小程序代码仓库根目录下的 swan.properties 文件

支持的配置项如下:

注意:带有【本地保护】字样的配置项,切勿提交到版本库,可以写在被 git ignore 的影子文件或者全局配置文件,例如:”.local.swan.properties” 或 “~/.swan/swan.properties”

SWAN_REPO_USER【本地保护】

  • 定义:小程序组件仓库认证信息 - 用户名
  • 取值:String 型
  • 例如:SWAN_REPO_USER=username

SWAN_REPO_PASS【本地保护】

  • 定义:小程序组件仓库认证信息 - 密码
  • 取值:String 型
  • 例如:SWAN_REPO_PASS=password

SWAN_EXTRA_PROPS

  • 定义:自定义额外的配置文件地址
  • 取值:String 型,默认:空
  • 例如:SWAN_EXTRA_PROPS=path/to/extra.properties

SWAN_NO_SRC_COMPILE

  • 定义:强制忽略源码,仅依赖maven组件编译,用于模拟宿主以组件方式介入
  • 取值:Bool 型,默认:false
  • 例如:SWAN_NO_SRC_COMPILE=true

SWAN_REPO_CHANNEL

  • 定义:参与编译及发布的小程序仓库渠道
  • 取值:String 型,默认:release
  • 取值范围:release, preview, snapshots
  • 例如:SWAN_REPO_CHANNEL=preview

2.2 源码集配置文件

用于配置当前代码集下所有模块共同的编译选项,源码集是指小程序的分仓库源码,配置文件位于仓库的根目录,支持以下一种配置文件:

  • home.properties:一般配置,目前无可用配置 version.properties:用于配置仓库组件的发布版本,为了兼容 easybox 仅支持 publishVersion 配置项,用于配置组件的发布版本 注:Nest
    插件的版本号与小程序框架一一对应,同样取自于 publishVersion 字段配置的版本号

2.3 模块集配置文件

用于配置当前模块集下所有模块通用的编译选项,模块集通常是指具有相同开源可见性的一组模块的父目录,包括以下一种配置文件:

  • modules.properties:模块集配置文件,用于配置模块集中各个模块共同的的编译属性,目前无可用配置