Cloudflare
CLI

opennextjs-cloudflare 命令行工具

Cloudflare 适配器提供了一个 opennextjs-cloudflare 命令行工具,用于开发、构建和部署您的应用程序。除非另有说明或您清楚自己在做什么,否则不应直接使用 wrangler 命令。

命令

opennextjs-cloudflare 支持多个命令,通过 opennextjs-cloudflare <command> 调用。

当前支持的命令有 buildpopulateCachepreviewdeployuploadmigrate

您可以通过调用 pnpm opennextjs-cloudflare 列出命令,并通过调用 pnpm opennextjs-cloudflare <command> --help 获取特定命令的帮助。

大多数命令接受特定于命令的选项(即 pnpm opennextjs-cloudflare build --skipNextBuild --noMinify),也接受 wrangler 选项(即 pnpm opennextjs-cloudflare build --config=/path/to/wrangler.jsonc --env=prod)。

build 命令

它首先通过调用 package.jsonbuild 脚本来构建 Next.js 应用程序——通常执行 next build。然后运行 Cloudflare 特定的构建步骤,以更新构建的文件使其能在 Cloudflare 运行时上运行。

populateCache 命令

它填充配置的 Open Next 缓存组件,以便缓存能在运行时工作。它可以填充本地机器开发期间使用的本地绑定(populateCache local),或部署应用程序使用的远程绑定(populateCache remote)。请注意,此命令由 previewdeployupload 命令隐式调用,因此在使用其中任何一个命令时无需显式调用 populateCache

从 Cloudflare 适配器的 1.13.0 版本开始,预览和部署默认支持 R2 批量上传,无需任何额外设置。

在 Cloudflare 适配器 1.13.0 版本之前,populateCache 命令通过 rclone 支持 R2 批量上传,这需要以下额外设置:

populateCache 命令支持 R2 批处理以加速大量文件的上传。要启用 R2 批处理,您需要按照 文档 (opens in a new tab) 中的描述创建 R2 账户 API 令牌,并提供以下环境变量:

  • R2_ACCESS_KEY_ID:R2 API 令牌的访问密钥 ID
  • R2_SECRET_ACCESS_KEY:R2 API 令牌的秘密访问密钥
  • CLOUDFLARE_ACCOUNT_ID:R2 存储桶所在的 账户 ID (opens in a new tab)

preview 命令

它首先填充本地缓存,然后启动本地开发服务器(通过 wrangler dev),以便您可以在本地预览应用程序。

deploy 命令

它首先填充远程缓存,然后将您的应用程序部署到 Cloudflare(通过 wrangler deploy)。应用程序一旦部署完成就会开始提供服务。

upload 命令

它首先填充远程缓存,然后将应用程序的一个版本上传到 Cloudflare(通过 wrangler versions upload)。请注意,上传后应用程序不会自动提供服务。请参阅 渐进式部署 (opens in a new tab) 以了解有关如何提供上传版本的更多信息。

migrate 命令

将标准的 Next.js 项目转换为与 OpenNext 兼容的项目。此命令自动化了 入门指南 中描述的设置步骤,包括:

  • 安装所需的依赖项(@opennextjs/cloudflarewrangler
  • 创建 wrangler.jsonc 配置文件
  • 创建 open-next.config.ts 文件
  • 添加 .dev.vars 文件
  • 更新 package.json 脚本
  • 添加静态资产缓存头(public/_headers
  • .open-next 添加到 .gitignore
  • 在 Next.js 配置中使用 initOpenNextCloudflareForDev() 设置本地开发

此外,该命令还会创建一个 R2 存储桶并为其配置缓存。

仅当您的 Cloudflare 账户启用了 R2 时,才会创建用于缓存的 R2 存储桶。如果未启用 R2, migrate 命令不会执行任何缓存设置。请参阅 缓存文档 以获取手动配置缓存的信息。

在现有的 Next.js 项目中运行该命令:

npx @opennextjs/cloudflare migrate