INTEGRITY Документация

Добавление локальных данных

Используете ли вы Wrangler или Cloudflare Vite plugin, ваш рабочий процесс для доступ данных при локальной разработке остаётся прежним. Однако вы можете только заполнить локальные ресурсы данными через Wrangler CLI.

Как это работает

Когда вы выполняете либо wrangler dev или vite, Miniflare автоматически создаёт локальные версии ваших ресурсов (например, KV, D1, или R2). Это означает, что вы Нельзя необходимо вручную настраивать отдельные локальные экземпляры для каждого сервиса. Однако новые локальные ресурсы не будет не содержит данных, вам потребуется использовать команды Wrangler с --local флаг, чтобы заполнить их. Изменения, внесённые в локальные ресурсы, не повлияют на production-данные.

Заполнение локальных ресурсов данными

Когда вы только начинаете разработку, ваши локальные ресурсы пусты. Их нужно будет заполнить данными с помощью 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

Выполнить SQL-запрос

npx wrangler d1 execute <DATABASE_NAME> --command="<SQL_QUERY>" --local

Выполнить SQL-файл

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

Durable Objects

В отличие от KV, D1 и R2, для Durable Objects нет команд 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

Используйте --persist-to флаг с wrangler dev. Этот флаг нужно указывать каждый раз при выполнении dev команда:

npx wrangler dev --persist-to <DIRECTORY>

Использование --local с --persist-to

Если вы выполните wrangler dev --persist-to <DIRECTORY> чтобы указать пользовательское расположение локальных данных, необходимо также указать тот же --persist-to <DIRECTORY> при выполнении других команд Wrangler, изменяющих локальные данные (и обязательно включите --local флаг).

Например, чтобы создать ключ KV с именем test со значением 12345 в локальном пространстве имён KV выполните:

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

Эта команда:

Если --persist-to не указан, Wrangler по умолчанию использует .wrangler/state для локальных данных.

Использование плагина Cloudflare для Vite

Чтобы настроить, где плагин Vite сохраняет локальные данные, задайте persistState параметр в файле конфигурации Vite:

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

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

Совместное использование состояния между инструментами

Если вы хотите, чтобы Wrangler и плагин Vite использовали общее состояние, настройте их на использование одного и того же пути хранения.