跳转到内容
本站为社区维护的非官方中文翻译,与 Cloudflare, Inc. 无关联。本站不提供账户登录,请勿在任何非官方站点输入您的 Cloudflare 账户信息。官方文档:developers.cloudflare.com

Wrangler 用户使用 cf

最后更新 查看 MarkdownAgent 设置

如果你使用 Wrangler 构建,你所掌握的大部分内容同样适用于 cf。本页说明哪些会变化、如何在现有 Wrangler 项目旁使用 cf,以及何时迁移项目本身。

哪些保持不变

Workers、绑定、兼容性日期、版本和部署的工作方式相同。迁移时,cf migrate 会保留 Worker 名称、绑定、资源 ID、路由和触发器。.dev.vars 中的本地 secrets 在 cf dev 下继续有效。

哪些会变化

这两种工具的主要差异是:

方面 Wrangler cf
覆盖范围 Workers 以及部分 Cloudflare 产品 公开 Cloudflare API,包含 2,900 多条命令
登录 wrangler login cf auth login,使用自己的凭据
项目配置 wrangler.jsonc 或 wrangler.toml 用 TypeScript 编写的 cloudflare.config.ts
环境 用 --env 选择的 env 块 用 --mode 选择的模式
构建 Wrangler 的打包器 Wrangler 的打包器或 Cloudflare Vite 插件
可部署产物 Wrangler 内部管理 .cloudflare/output/v0/ 中的 Build Output
输出 许多命令使用表格,部分支持 --json 大多数 API 命令使用 JSON
资源标识符 许多资源使用名称 Cloudflare API 期望的 ID
本地与远程数据 部分命令默认使用本地数据 远程。--local 仅适用于受支持的 KV、D1 和 R2 命令

例如,Wrangler 接受 D1 数据库名称,而 cf 期望数据库 ID:

wrangler d1 execute my-database --remote --command "SELECT 1"
cf d1 query <DATABASE_ID> --sql "SELECT 1"

完整等效列表请参阅 Wrangler 到 cf 参考。

在 Wrangler 项目旁使用 cf

你无需迁移项目即可开始使用 cf。资源和账户命令(例如 cf d1 list 或 cf r2 buckets list)可在任何目录中工作,包括未迁移的 Wrangler 项目。它们不会读取 Wrangler 配置文件,因此不会使用其中的 account_id。请设置 CLOUDFLARE_ACCOUNT_ID,或在 cf 询问时选择账户。详情请参阅选择账户。

在迁移项目之前,请继续使用 Wrangler 进行开发和部署,例如 wrangler dev 和 wrangler deploy。使用 cf 处理账户和资源任务,包括 Wrangler 未覆盖的产品。

cf 不会复用你的 Wrangler 登录。首次运行 cf 之前,请安装并登录。在自动化中,这两种工具都会读取 CLOUDFLARE_API_TOKEN 和 CLOUDFLARE_ACCOUNT_ID。

仅在迁移后再运行项目命令

cf dev、cf build 和 cf deploy 读取 cloudflare.config.ts。它们不会读取 wrangler.jsonc 或 wrangler.toml。在尚未迁移的 Wrangler 项目中,结果取决于项目:

项目 结果
没有框架或静态资源的 Worker 命令失败,并显示 cloudflare.config.ts is required when --experimental-new-config is enabled. 以及堆栈跟踪。
使用 Cloudflare Vite 插件的 Worker 自动配置会为单页应用写入新的 cloudflare.config.ts,不包含你的入口或绑定。在没有 index.html 的项目中,cf build 会失败并显示 Cannot resolve entry module index.html,cf dev 会返回 404 响应。
静态资源目录包含 index.html 的 Worker 自动配置将项目视为静态站点,并写入 cloudflare.config.ts 和 wrangler.config.ts。cf build 会成功,但结果是以 package.json 命名的静态资源 Worker,不包含你的 Worker 代码或绑定。

当自动配置运行时,它还会更改 package.json,包括 deploy 脚本。它也可能更改 lockfile、.gitignore 和 vite.config.ts。没有终端时(例如在 CI 中),它会在不请求确认的情况下进行这些更改。

如果这些命令已经在项目中运行过,请在迁移前撤销其更改:

  1. 运行 git status 列出已更改和新的文件。
  2. 还原每个已更改的文件,例如使用 git restore package.json。
  3. 删除 git status 列出的每个新文件,例如 cloudflare.config.ts、wrangler.config.ts 和 .cloudflare/ 目录。
  4. 运行 cf migrate。在 cloudflare.config.ts 存在时它不会运行。

何时迁移

在以下情况下迁移项目:

  • 用 TypeScript 编写配置,并从中推断绑定类型。
  • 用同一个 CLI 处理项目、账户和资源任务。
  • 构建一次,稍后部署同一 Build Output,例如从 CI 部署。

如果项目依赖仍需要 Wrangler 的内容中列出的任务,请暂时继续使用 Wrangler。

迁移如何工作

cf migrate 读取 Wrangler 配置文件,并在其旁边写入 cloudflare.config.ts。它会转换绑定、路由、触发器和环境,并将 cf 添加为项目的开发依赖。除非项目已经使用 Cloudflare Vite 插件,否则它会保留 Wrangler 的打包器,因此你无需为了迁移而采用 Vite。

预览更改,然后运行迁移:

cf migrate --dry-run
cf migrate

某些设置之后需要手动处理,例如 Durable Object 迁移、Workflows、Containers 和软件包脚本。cf migrate 会列出每项,并在生成的文件中标记它们。有关 Workflows 和 Containers,请参阅 Workflows 和 Containers。完整流程请参阅迁移 Wrangler 项目。

仍需要 Wrangler 的内容

cf 处于 Beta 阶段,尚未覆盖所有 Wrangler 任务:

  • 实时日志:cf 尚不能流式传输实时日志。请运行 npx wrangler tail <WORKER_NAME>,而不是安装 Wrangler。
  • 单个 secret:cf 尚不能设置单个 secret。有关选项,请参阅尚不支持的命令。

Wrangler 不会读取 cloudflare.config.ts。如果你仍在已迁移的项目中运行 Wrangler 命令,请在不再需要它们之前保留 Wrangler 配置文件。

这篇文档对您有帮助吗?