部署云函数
使用 tcb fn deploy 命令可以快速部署云函数到云开发环境。
tcb fn deploy [options] [name]
命令参数
| 参数 | 说明 | 必填 |
|---|---|---|
-e, --env-id <envId> | 环境 Id | 否 |
--httpFn | 部署为 HTTP 云函数 | 否 |
--ws | 部署 HTTP 云函数时启用 WebSocket 协议 | 否 |
--code-secret <codeSecret> | 传入此参数将保护代码,格式为 36 位大小写字母和数字 | 否 |
--force | 如果存在同名函数,上传后覆盖同名函数 | 否 |
--path <path> | 自动创建 HTTP 网关访问路径 | 否 |
--dir <dir> | 指定云函数的文件夹路径 | 否 |
--all | 部署配置文件中包含的全部云函数 | 否 |
--deployMode <deployMode> | 上传模式:cos(默认推荐)、zip(不推荐,限 1.5 MB)、image(镜像) | 否 |
--yes | 跳过交互确认,直接执行部署 | 否 |
--install-dependency <boolean> | 是否云端自动安装依赖:true 开启、false 关闭(覆盖配置文件,默认跟随配置) | 否 |
--metadata-file <path> | 将本次部署的资源元数据(名称/资源类型/动作/版本引用/部署时间/产出命令)写入指定 JSON 文件,已存在则按资源合并 | 否 |
-h, --help | 查看命令帮助信息 | 否 |
基本用法
方式一:使用配置文件(推荐)
在包含 cloudbaserc.json 配置文件的项目目录下执行:
# 部署指定函数
tcb fn deploy <functionName>
# 部署配置文件中的所有函数
tcb fn deploy --all
# 关闭云端安装依赖,本地 node_modules 随包上传
tcb fn deploy <functionName> --install-dependency false
# 显式开启云端自动安装依赖
tcb fn deploy <functionName> --install-dependency true
方式二:从当前目录部署
在函数代码目录下(包含 package.json),无需配置文件即可直接部署:
cd my-function
tcb fn deploy
CLI 会自动从 package.json 读取函数名称,并使用默认配置部署。
部署 HTTP 函数
添加 --httpFn 参数即可部署为 HTTP 函数:
tcb fn deploy <functionName> --httpFn
使用示例
标准工作空间部署
project/
├── cloudbaserc.json
└── functions/
└── hello/
├── index.js
└── package.json
tcb fn deploy hello
自定义函数目录
// cloudbaserc.json
{
"envId": "your-env-id",
"functionRoot": "./functions",
"functions": [
{
"name": "api",
"dir": "./src/cloud-functions/api",
"runtime": "Nodejs20.19"
}
]
}
tcb fn deploy api
命令行指定目录
tcb fn deploy hello --dir ./my-custom-path/hello
部署路径解析
部署时,CLI 按以下优先级解析函数代码路径:
1. --dir 参数(命令行指定) → 最高优先级
2. functions[].dir(配置文件) → 次优先级
3. functionRoot + 函数名 → 默认路径(functionRoot 默认为 ./functions)
4. 当前工作目录 → 无配置文件时的兜底
| 场景 | 配置文件 | --dir | functions.dir | 最终路径 |
|---|---|---|---|---|
| 标准部署 | ✅ 存在 | ❌ | ❌ | functionRoot/函数名 |
| 自定义目录 | ✅ 存在 | ❌ | ✅ 指定 | functions.dir 路径 |
| 命令行覆盖 | ✅ 存在 | ✅ 指定 | - | --dir 路径 |
| 无配置文件 | ❌ | ❌ | - | 当前工作目录 |
注意
批量部署时(使用 --all 或不指定函数名),--dir 参数无效,会被忽略。
批量部署行为
使用 --all(或不指定函数名)批量部署时,CLI 采用 5 路并行(固定值)逐个部署配置文件中的函数,而非串行排队:
- 同一时刻最多 5 个函数在同时部署(创建/更新代码、更新配置、创建触发器等)
- 某个函数部署失败不会中断其余函数,CLI 会继续部署完所有函数,最后汇总报告失败列表并以非零退出码结束
- 每个函数部署完成后会以 1 秒间隔轮询云端状态直至就绪,函数数量较多时对云 API 的请求较为集中
限频提示
单账户(UIN)对云函数 API 有请求频率限制。函数数量较多(如数十个以上)、或多条流水线同时部署同一账户时,可能触发限频(RequestLimitExceeded)。限频导致的失败不会自动重试,需重新执行部署。如需更可控的并发,可改用 tcb deploy --concurrency。