用途
cf 是 Cloudflare 官方命令行界面,用于公开的 Cloudflare API 和 Workers 项目。API 部分包含 2,900 多条命令,多数由 API schema 生成。该工具处于 Beta 阶段,命令、配置和构建输出在稳定版发布前可能变化。
主要能力
- 命令检索:用
cf cli search "任务描述"在本地检索匹配命令,无需凭证,最多返回 5 条 JSON 匹配结果。 - 请求结构查看:用
cf schema <命令>查看 API 请求的 method、path、参数和 body 字段;用cf <command> --help查看参数与选项。 - 安全执行:
--dry-run以 JSON 打印请求但不发送,且无需凭证。 - 输出约定:结果以 JSON 输出到标准输出,状态与错误信息输出到标准错误,便于管道传给 jq 或重定向。命令失败时以非零状态退出。
- Workers 项目:支持
cf init、cf dev、cf deploy,以及类型化的cloudflare.config.ts;支持从 Wrangler 迁移(cf migrate)。 - 资源操作:可在终端查找、创建和删除资源,包括 DNS、zone、存储等。
使用方式
安装与登录:
npm install --global cf # 同时安装 cf 和 cloudflare 两个等价命令
cf --version
cf auth whoami
需要 Node.js 22.18 或更高版本,不支持 Bun。如果 PATH 中已有另一个名为 cf 的工具,改用 cloudflare。
cf auth login 会打印链接和一次性代码并打开浏览器;在远程机器、SSH 或容器中加 --no-browser,从其他设备批准;加 --force 可重新登录。cf 使用自己的凭证,不复用 Wrangler 登录。自动化代理和 CI 无法完成交互登录,应设置 CLOUDFLARE_API_TOKEN。
查找命令示例:
cf cli search "create a DNS record" # 本地执行,无需凭证;整个任务需加引号
cf schema d1 create
cf deploy --help
cf cli search 只接受一个参数,第一个词之后未加引号的内容会被当作未知命令解析。
安全注意事项
- 先预览:对未验证的命令先使用
--dry-run。 - 删除被中止仍可能返回 0:非交互会话中,不带
--force的破坏性命令会向标准错误打印 Aborted. 并以 0 退出,零退出码不代表资源已删除。 - 谨慎使用
--force:某些命令中它同时是 API 参数,例如cf workers delete --force会连带删除被其他 Workers 引用的 Worker。 --local适用范围有限:仅对 KV 键、D1 数据库(cf d1 raw、cf d1 migrations list|apply)和 R2 对象有效;其他命令(包括cf d1 query)会返回错误而非调用 API。
与 Wrangler 的选择
- 存在
cloudflare.config.ts:使用 cf。 - 存在
wrangler.jsonc、wrangler.json或wrangler.toml且无cloudflare.config.ts:dev、build、deploy 继续用 Wrangler,不要在该项目运行cf dev、cf build、cf deploy,以免生成忽略 Wrangler 文件的新配置或失败;cf 资源命令(DNS、zone、存储)可并行使用。仅在用户要求时运行cf migrate,先cf migrate --dry-run预览,再执行并处理生成的cloudflare.config.ts中的 TODO(@cloudflare) 注释。 - 两者都不存在:使用 cf,不安装 Wrangler 或创建 Wrangler 配置文件。
暂不支持的命令
cf 尚未支持全部 Wrangler 命令,以下需用 npx wrangler 执行(Wrangler 不读取 cloudflare.config.ts,需传入 Worker 名称):
- 实时日志:
npx wrangler tail <WORKER_NAME> - 单个 secret:
npx wrangler secret put <SECRET_NAME> --name <WORKER_NAME>;也可通过向cf deploy或cf workers versions create传入--secrets-file <PATH>随新版本上传 secrets。
完整列表参见 Wrangler 到 cf 参考文档中的“Commands not yet supported”。
适用场景
在终端中检索并执行 Cloudflare API 命令、管理 DNS/zone/存储等资源、开发和部署 Workers,以及在 CI 或自动化代理中通过 API Token 调用 Cloudflare。
限制
处于 Beta;部分 Wrangler 命令尚不支持;--local 仅限特定资源类型;交互式登录无法在 CI 和无人值守代理中完成;命令与分页选项因命令而异。