跳转到内容
搜索文档

添加本地数据

最后更新 查看 MarkdownAgent 设置

无论你使用 Wrangler 还是 Cloudflare Vite 插件,在本地开发期间访问数据的工作流都相同。不过,你只能通过 Wrangler CLI 为本地资源填充数据

工作原理

当你运行 wrangler devvite 时,Miniflare 会自动为你的资源(如 KVD1R2)创建本地版本。这意味着你无需为每个服务手动设置单独的本地实例。不过,新创建的本地资源不会包含任何数据——你需要使用带 --local 标志的 Wrangler 命令来填充它们。对本地资源的更改不会影响生产数据。

为本地资源填充数据

首次开始开发时,本地资源将为空。你需要使用 Wrangler CLI 为它们填充数据。

KV 命名空间

npx wrangler kv key put <KEY> <VALUE> --binding=<BINDING> --local 
npx wrangler kv bulk put <FILENAME.json> --binding=<BINDING> --local

R2 存储桶

npx wrangler r2 object put <BUCKET>/<KEY> --file=<PATH_TO_FILE> --local

你也可以包含其他元数据

D1 数据库

npx wrangler d1 execute <DATABASE_NAME> --command="<SQL_QUERY>" --local
npx wrangler d1 execute <DATABASE_NAME> --file=./schema.sql --local

Durable Objects

对于 Durable Objects,与 KV、D1 和 R2 不同,没有用于填充本地数据的 CLI 命令。要在本地开发期间为 Durable Objects 添加数据,你必须编写应用代码来创建 Durable Object 实例,并调用存储状态的方法。这通常涉及创建开发端点或测试路由,用所需数据初始化 Durable Objects。

本地数据的存储位置

默认情况下,Wrangler 和 Vite 插件都将本地绑定数据存储在同一位置:项目目录中的 .wrangler/state 文件夹。该文件夹在子目录中存储所有本地绑定的数据:KV 命名空间、R2 存储桶、D1 数据库、Durable Objects 等。

清除本地存储

你可以随时删除 .wrangler/state 文件夹以重置本地环境,Miniflare 会在下次运行 dev 命令时重新创建它。你也可以删除 .wrangler/state 内的特定子文件夹,进行更有针对性的清理。

更改本地数据目录

如果你希望为本地存储指定不同的目录,可以通过 Wrangler CLI 或在 Vite 插件配置中进行设置。

使用 Wrangler

wrangler dev 中使用 --persist-to 标志。每次运行 dev 命令时都需要指定此标志:

npx wrangler dev --persist-to <DIRECTORY>

--local--persist-to 一起使用

如果你运行 wrangler dev --persist-to <DIRECTORY> 为本地数据指定自定义位置,在运行其他修改本地数据的 Wrangler 命令时,也必须包含相同的 --persist-to <DIRECTORY>(并确保包含 --local 标志)。

例如,要在本地 KV 命名空间中创建名为 test、值为 12345 的 KV 键,请运行:

npx wrangler kv key put test 12345 --binding MY_KV_NAMESPACE --local --persist-to worker-local

此命令:

  • 在绑定 MY_KV_NAMESPACE(在 Wrangler 配置文件 中定义)中将 KV 键 test 设置为 12345
  • 使用 --persist-to worker-local 确保数据创建在 worker-local 目录中,而不是默认的 .wrangler/state
  • 添加 --local 标志,表示你要修改本地数据。

如果未指定 --persist-to,Wrangler 默认使用 .wrangler/state 存储本地数据。

使用 Cloudflare Vite 插件

要自定义 Vite 插件存储本地数据的位置,请在 Vite 配置文件中配置 persistState 选项

vite.config.jsjs
import { defineConfig } from "vite";
import { cloudflare } from "@cloudflare/vite-plugin";

export default defineConfig({
	plugins: [
		cloudflare({
			persistState: { path: "./my-custom-directory" },
		}),
	],
});

在工具之间共享状态

如果你希望 Wrangler 和 Vite 插件共享相同的状态,请将它们配置为使用相同的持久化路径。

这篇文档对您有帮助吗?