为了应对复杂的使用场景,我们提供了项目级的
cloudbaserc.json
配置文件,可以在 CLI 和 VS Code 插件中共享使用。 配置文件包含了使用云开发 CLI 或 VS Code 插件的过程中的相关配置,可以简化 CLI 和 VS Code 的使用。
默认情况下,使用
cloudbase init
初始化项目时,会生成 cloudbaserc.json
文件作为配置文件,您也可以使用 --config-file
指定其他文件作为配置文件,文件必须满足格式要求。动态变量
CLI 0.9.1+ 版本引入了 2.0 新版本配置文件,支持了动态变量的特性。在
cloudbaserc.json
中声明 "version": "2.0"
即可启用新的特性,新版配置文件只支持 JSON 格式。动态变量特性允许在
cloudbaserc.json
配置文件中使用动态变量,从环境变量或其他数据源获取动态的数据。使用 {{}}
包围的值定义为动态变量,可以引用数据源中的值。如下所示:{"version": "2.0","envId": "envId","functionRoot": "./functions","functions": [{"name": "{{variable}}"}]}
数据源
CloudBase 定义多个数据源的命名空间,用于区分不同的数据源。您可以通过
命名空间.变量名
引用数据,例如 {{tcb.envId}}
。命名空间 | 变量名 | 含义 |
tcb | envId | 配置文件或通过命令行参数指定的环境 ID |
util | uid | 24 位的随机字符串 |
env | * | 从 .env 类型文件中加载的环境变量 |
环境变量
CloudBase 对环境变量做了特别支持,以解决不同开发阶段、不同配置,使用 CLI 与 Framework 部署资源的问题。CloudBase 支持使用
.env
类型文件作为主要数据源,使用不同的后缀区分不同的阶段、场景,如 .env.development
可以表示开发阶段的配置,.env.production
可以表示生产环境的配置等。CloudBase 定义了一些约束:默认情况下,CLI 与 Framework 会自动加载
.env
和 .env.local
文件中的数据,开发者可以通过使用 --mode <mode>
选项添加特定环境的配置。.env # 在所有的环境中被载入.env.local # 在所有的环境中被载入,可以加入 .gitignore 忽略.env.[mode] # 只在指定的模式中被载入
在加载数据源时,
.env
和 .env.local
会被直接加载(如果存在的话),当指定 --mode [mode]
时,会再加载 .env.[mode]
文件,并按照如下的顺序合并覆盖同名变量:.env.[mode] > .env.local > .env
,即 .env.[mode]
中的同名变量会覆盖 .env.local
和 .env
文件中的同名变量,以此类推。当使用
tcb framework deploy --mode test
命令时,会自动加载 .env
,.env.local
以及 .env.test
等三个文件中的环境变量合并使用。说明
我们建议您将密钥等私密配置放在
.env.local
文件中,并将 .env.local
加入 .gitignore
配置中。如
.env.local
文件中存在以下变量。DB_HOST = localhostDB_USER = rootDB_PASSWORD = s1mpl3
则可以在配置文件中使用。
{"version": "2.0","envId": "xxx","functionRoot": "./functions","functions": [{"name": "test","envVariables": {"PASSWORD": "{{env.DB_PASSWORD}}"}}]}
扩展 env 语法
一般情况下,您可以直接在
env
文件中使用键值对。FOO=barVUE_APP_SECRET=secret
但是,当我们需要使用复杂的环境变量时,简单的键值对就有些力不从心了。所以,CloudBase 扩展了
.env
支持的语法,支持了复合键值对,您可以通过 .
为同名键添加属性,例如:Book.Name=TestBook.Publish=2020Book.Authors.0=JackBook.Authors.1=Mike
会被编译为包含以下属性的 Book 对象。
{"Name": "Test","Publish": "2020","Authors": ["Jack", "Mike"]}
您可以在
cloudbaserc.json
直接使用 {{env.Book.Name}}
引用相关属性。注意
当使用的
.env
值为对象时,在编译时会被转换成 JSON 字符串,如 {{env.Book}}
会被编译为 {"Name":"Test","Publish":"2020","Authors":["Jack","Mike"]}
。字段
字段说明如下表所示:
字段 | 类型 | 说明 |
version | String | 当前配置文件的版本,目前支持的版本号有: "2.0" 。当 version 字段不存在时,默认当前配置文件为 "1.0" 版本。 |
envId | String | 环境 ID,是环境的唯一标识。 |
region | String | 当前环境的地域信息,上海地域的环境可以不填,其他地域的环境则必须填写。 |
functionRoot | String | 函数代码存放的文件夹路径,相对于项目根目录的路径。 |
functions | Array<CloudFunction> |
简单参考配置
下面是一个简单的 CLI 配置文件包含的基本信息:
{"version": "2.0","envId": "dev-xxxx","functionRoot": "functions","functions": [{"name": "app","timeout": 5,"envVariables": {"key": "value"}}]}