← Cloudflare Workers / workers / wrangler
Конфигурация
При необходимости Wrangler использует файл конфигурации для настройки процесса разработки и развёртывания Worker.
Рекомендуется относиться к файлу конфигурации Wrangler как к источник достоверных данных для настройки Worker.
Пример конфигурации Wrangler
{
"$schema": "./node_modules/wrangler/config-schema.json",
// Top-level configuration
"name": "my-worker",
"main": "src/index.js",
// Set this to today's date
"compatibility_date": "2026-08-28",
"workers_dev": false,
"route": {
"pattern": "example.org/*",
"zone_name": "example.org",
},
"kv_namespaces": [
{
"binding": "<MY_NAMESPACE>",
"id": "<KV_ID>",
},
],
"env": {
"staging": {
"name": "my-worker-staging",
"route": {
"pattern": "staging.example.org/*",
"zone_name": "example.org",
},
"kv_namespaces": [
{
"binding": "<MY_NAMESPACE>",
"id": "<STAGING_KV_ID>",
},
],
},
},
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"
main = "src/index.js"
# Set this to today's date
compatibility_date = "2026-08-28"
workers_dev = false
[route]
pattern = "example.org/*"
zone_name = "example.org"
[[kv_namespaces]]
binding = "<MY_NAMESPACE>"
id = "<KV_ID>"
[env.staging]
name = "my-worker-staging"
[env.staging.route]
pattern = "staging.example.org/*"
zone_name = "example.org"
[[env.staging.kv_namespaces]]
binding = "<MY_NAMESPACE>"
id = "<STAGING_KV_ID>"Окружения
Для Worker можно определить разные конфигурации с помощью Wrangler окружения. Существует среда по умолчанию (верхнего уровня), а также можно создавать именованные среды с собственной конфигурацией.
Они определяются в разделе [env.<name>] ключи, такие как [env.staging] который затем можно просмотреть или развернуть с помощью -e / --env флаг в wrangler команды, такие как npx wrangler deploy --env staging.
Большинство ключей являются наследуемыми: это означает, что конфигурацию верхнего уровня можно использовать в окружениях. Bindings, например vars или kv_namespaces, не наследуются и должны быть заданы явно.
Кроме того, есть несколько ключей, которые могут только отображаются на верхнем уровне.
Автоматическое предоставление ресурсов
При развёртывании Worker Wrangler может автоматически создавать необходимые ресурсы, так что заранее создавать их вручную не нужно.
На данный момент это работает для следующих ресурсов: KV, R2, D1, Flagship, AI Search, Agent Memory, Dispatch Namespaces и Queues.
Чтобы использовать эту функцию, добавьте привязки в файл конфигурации без добавляя идентификаторы ресурсов, а для R2 указывается имя bucket. Ресурсы будут созданы с именем вашего worker в качестве префикса.
{
"kv_namespaces": [
{
"binding": "<MY_KV_NAMESPACE>",
},
],
}[[kv_namespaces]]
binding = "<MY_KV_NAMESPACE>"Когда вы выполняете wrangler dev, локальные ресурсы будут создаваться автоматически и сохраняться между запусками. Когда вы выполняете wrangler deploy, ресурсы будут созданы за вас, а их идентификаторы будут записаны обратно в файл конфигурации.
Если вы развертываете worker с ресурсами без идентификаторов ресурсов из дашборда (например, через GitHub), ресурсы будут созданы, но их идентификаторы будут доступны только через дашборд. В настоящее время эти идентификаторы ресурсов не записываются обратно в ваш репозиторий.
Ключи только верхнего уровня
Ключи верхнего уровня применяются ко всему Worker целиком (а значит, ко всем окружениям). Их нельзя задавать внутри именованных окружений.
keep_varsbooleanнеобязательно- Должен ли Wrangler сохранять переменные, настроенные в dashboard, при развёртывании. См. источник достоверных данных.
send_metricsbooleanнеобязательно- Должен ли Wrangler отправлять данные об использовании этого проекта в Cloudflare. По умолчанию используется
true. Подробнее об этом можно узнать в нашем политика данных ↗.
- Должен ли Wrangler отправлять данные об использовании этого проекта в Cloudflare. По умолчанию используется
dependencies_instrumentationobjectнеобязательно- Настраивает инструментирование зависимостей npm-пакетов при развёртывании или загрузке версии Worker. По умолчанию включено.
enabledboolean: нужно ли Wrangler собирать и отправлять метаданные о зависимостях npm пакетов (имена и версии пакетов). По умолчанию установлено вtrue.
siteobjectнеобязательно, устарело- См. Workers Sites раздел ниже. Вместо этого подхода рекомендуется использовать Cloudflare Pages и Workers Assets.
- Это не поддерживается Cloudflare Vite plugin.
Наследуемые ключи
Наследуемые ключи настраиваются на верхнем уровне и могут наследоваться (или переопределяться) конфигурацией конкретного окружения.
namestringобязательно- Имя вашего Worker. Буквенно-цифровые символы (
a,b,c, и т. д.) и дефисы (-) только. Не используйте символы подчёркивания (_). Имена Worker могут содержать до 255 символов. Если вы планируете использоватьworkers.devподдомен, имя должно содержать не более 63 символов и не может начинаться или заканчиваться дефисом.
- Имя вашего Worker. Буквенно-цифровые символы (
mainstringобязательно- Путь к точке входа вашего Worker, которая будет выполнена. Например:
./src/index.ts.
- Путь к точке входа вашего Worker, которая будет выполнена. Например:
compatibility_datestringобязательно- Дата в формате
yyyy-mm-dd, который будет использоваться для определения того, какая версия Workers runtime применяется. См. Даты совместимости.
- Дата в формате
account_idstringнеобязательно- Это идентификатор аккаунта, связанного с вашей зоной. У вас может быть несколько аккаунтов, поэтому убедитесь, что используете идентификатор аккаунта, связанного с зоной или маршрутом, если вы его указываете. Его также можно задать через
CLOUDFLARE_ACCOUNT_IDпеременную окружения.
- Это идентификатор аккаунта, связанного с вашей зоной. У вас может быть несколько аккаунтов, поэтому убедитесь, что используете идентификатор аккаунта, связанного с зоной или маршрутом, если вы его указываете. Его также можно задать через
compatibility_flagsstring[]необязательно- Список флагов, включающих функции из будущих версий среды выполнения Workers, обычно используемых вместе с
compatibility_date. См. даты совместимости.
- Список флагов, включающих функции из будущих версий среды выполнения Workers, обычно используемых вместе с
workers_devbooleanнеобязательно- Включает использование
*.workers.devподдомен для развёртывания вашего Worker. Если у вас есть Worker, предназначенный только дляscheduledсобытия, вы можете задать здесьfalse. По умолчанию используетсяtrue. См. типы маршрутов.
- Включает использование
preview_urlsbooleanнеобязательно- Включает использование Preview URL для тестирования Worker. По умолчанию используется значение
workers_dev. См. Preview URLs.
- Включает использование Preview URL для тестирования Worker. По умолчанию используется значение
routeRouteнеобязательно- Маршрут, на который должен быть развёрнут ваш Worker. Только один из
routesилиrouteтребуется. См. типы маршрутов.
- Маршрут, на который должен быть развёрнут ваш Worker. Только один из
routesRoute[]необязательно- Массив маршрутов, на которые должен быть развёрнут ваш Worker. Может быть указан только один из
routesилиrouteтребуется. См. типы маршрутов.
- Массив маршрутов, на которые должен быть развёрнут ваш Worker. Может быть указан только один из
tsconfigstringнеобязательно- Путь к пользовательскому
tsconfig. - Не применимо, если вы используете Cloudflare Vite plugin.
- Путь к пользовательскому
triggersobjectнеобязательно- Определения Cron для запуска Worker
scheduledфункция. См. триггеры.
- Определения Cron для запуска Worker
rulesRuleнеобязательно- Упорядоченный список правил, определяющих, какие модули импортировать и в каком виде их импортировать. Вам потребуется указать правила, чтобы использовать
Text,DataиCompiledWasmмодули, либо если вы хотите иметь.jsфайл рассматривался какESModuleвместоCommonJS. - Не применимо, если вы используете Cloudflare Vite plugin.
- Упорядоченный список правил, определяющих, какие модули импортировать и в каком виде их импортировать. Вам потребуется указать правила, чтобы использовать
buildBuildнеобязательно- Настраивает пользовательский шаг сборки, который Wrangler выполняет при сборке вашего Worker. См. Пользовательские сборки.
- Не применимо, если вы используете Cloudflare Vite plugin.
no_bundlebooleanнеобязательно- Пропустить внутренние шаги сборки и развернуть скрипт Worker напрямую. У вас должен быть обычный JavaScript Worker без зависимостей.
- Не применимо, если вы используете Cloudflare Vite plugin.
find_additional_modulesbooleanнеобязательно- Если указано значение true, Wrangler обойдет дерево файлов ниже
base_dir. Любые файлы, соответствующиеrulesбудет включён в развёрнутый Worker. По умолчанию равно true, еслиno_bundleравно true, иначе false. Может использоваться только с Workers в формате Module (не в формате Service Worker). - Не применимо, если вы используете Cloudflare Vite plugin.
- Если указано значение true, Wrangler обойдет дерево файлов ниже
base_dirstringнеобязательно- Каталог, в котором вычисляются module "rules" при подключении дополнительных файлов (через
find_additional_modules) в деплой Worker. По умолчанию используется каталог, содержащийmainточку входа Worker, если не указано иное. - Не применимо, если вы используете Cloudflare Vite plugin.
- Каталог, в котором вычисляются module "rules" при подключении дополнительных файлов (через
preserve_file_namesbooleanнеобязательно- Определяет, будет ли Wrangler сохранять имена файлов дополнительных модулей, упакованных вместе с Worker.
По умолчанию к именам файлов добавляется хеш содержимого.
Например,
34de60b44167af5c5a709e62a4e20c4f18c9e3b6-favicon.ico. - Не применимо, если вы используете Cloudflare Vite plugin.
- Определяет, будет ли Wrangler сохранять имена файлов дополнительных модулей, упакованных вместе с Worker.
По умолчанию к именам файлов добавляется хеш содержимого.
Например,
minifybooleanнеобязательно- Минифицируйте скрипт Worker перед загрузкой.
- Если вы используете Cloudflare Vite plugin,
minifyзаменяется наbuild.minify↗.
keep_namesbooleanнеобязательно- Wrangler использует esbuild для обработки кода Worker при разработке и развёртывании. Эта опция позволяет
вам указать, должен ли esbuild применять свою keepNames ↗ логику в код или нет. По умолчанию используется
true.
- Wrangler использует esbuild для обработки кода Worker при разработке и развёртывании. Эта опция позволяет
вам указать, должен ли esbuild применять свою keepNames ↗ логику в код или нет. По умолчанию используется
logpushbooleanнеобязательно- Включает Workers Trace Events Logpush для Worker. Любые скрипты с этим свойством будут автоматически подхватываться заданием Workers Logpush, настроенным для вашего аккаунта. По умолчанию
false. См. Workers Logpush.
- Включает Workers Trace Events Logpush для Worker. Любые скрипты с этим свойством будут автоматически подхватываться заданием Workers Logpush, настроенным для вашего аккаунта. По умолчанию
limitsLimitsнеобязательно- Настраивает ограничения на выполнение в среде выполнения. См. Лимиты.
observabilityobjectнеобязательно- Настраивает автоматические параметры наблюдаемости для телеметрических данных, отправляемых вашим Worker. См. Observability.
assetsAssetsнеобязательно- Настраивает статические ресурсы, которые будут обслуживаться. См. Assets для дополнительных сведений.
exportsobjectнеобязательно- Объявляет классы Durable Object, которые экспортирует этот Worker, а также их состояние жизненного цикла (
created,deleted,renamed,transferred,expecting-transfer). См. Экспорт классов Durable Object. Взаимоисключаемо сmigrations.
- Объявляет классы Durable Object, которые экспортирует этот Worker, а также их состояние жизненного цикла (
migrationsobjectнеобязательно- Устаревшая императивная конфигурация, которая сопоставляет Durable Object по имени класса с состоянием времени выполнения. Для новых Workers рекомендуется использовать
exports. См. Миграции классов Durable Object (устаревший способ).
- Устаревшая императивная конфигурация, которая сопоставляет Durable Object по имени класса с состоянием времени выполнения. Для новых Workers рекомендуется использовать
placementobjectнеобязательно- Настраивает, где выполняется ваш Worker, чтобы минимизировать задержку до бэкенд-сервисов. См. Placement.
modestring: установите в"smart"чтобы автоматически размещать Worker ближе к бэкенд-сервисам на основе наблюдаемой задержки.regionstring: укажите облачный регион (например,"aws:us-east-1","gcp:europe-west1", или"azure:westeurope") чтобы разместить ваш Worker ближе к инфраструктуре в этом регионе.hoststring: укажите имя хоста и порт для однохостового сервиса уровня 4 (например,"my_database_host.com:5432") чтобы разместить ваш Worker ближе к этому сервису.hostnamestring: укажите имя хоста для однохостового сервиса уровня 7 (например,"my_api_server.com") чтобы разместить ваш Worker ближе к этому сервису.
Ненаследуемые ключи
Ненаследуемые ключи можно настраивать на верхнем уровне, но окружения не могут их наследовать, поэтому такие ключи нужно указывать отдельно для каждого окружения.
defineRecord<string, string>необязательно- Набор значений, которые подставляются при развёртывании вашего Worker.
- Если вы используете Cloudflare Vite plugin,
defineзаменяется наdefine↗.
varsobjectнеобязательно- Набор переменных окружения, которые задаются при развёртывании вашего Worker. См. Переменные окружения.
durable_objectsobjectнеобязательно- Список Durable Objects, к которым должен быть привязан ваш Worker. См. Durable Objects.
kv_namespacesobjectнеобязательно- Список пространств имен KV, к которым должен быть привязан ваш Worker. См. Пространства имён KV.
r2_bucketsobjectнеобязательно- Список R2 buckets, к которым должен быть привязан ваш Worker. См. Бакеты R2.
ai_search_namespacesobjectнеобязательно- Список пространств имен AI Search, к которым должен быть привязан ваш Worker. См. Пространства имён AI Search.
ai_searchobjectнеобязательно- Список привязок экземпляров AI Search, напрямую привязанных к существующим экземплярам в пространстве имен по умолчанию. См. Инстансы AI Search.
vectorizeobjectнеобязательно- Список индексов Vectorize, к которым должен быть привязан ваш Worker. См. Индексы Vectorize.
servicesobjectнеобязательно- Список Service Bindings, к которым должен быть привязан ваш Worker. См. привязки к сервисам.
queuesobjectнеобязательно- Список производителей и потребителей Queue, к которым должен быть привязан ваш Worker. См. Queues.
workflowsobjectнеобязательно- Список Workflows, к которым должен быть привязан ваш Worker. См. Workflows.
tail_consumersobjectнеобязательно- Список Tail Workers, которым ваш Worker отправляет данные. См. Tail Workers.
secretsobjectнеобязательно- Объявляет имена секретов, которые требуются вашему Worker. Используется для проверки при локальной разработке и деплое, а также как источник достоверных данных для генерации типов. См. Секреты.
requiredstring[]необязательно : список имён секретов, которые нужно задать для развёртывания Worker.
secrets_store_secretsobjectнеобязательно- Список привязок Secrets Store, к которым должен быть привязан ваш worker. См. Secrets Store.
Типы маршрутов
Существует три типа маршруты: Custom Domains, маршруты, а также workers.dev.
Custom Domains
Custom Domains позволяют подключить Worker к домену или поддомену без изменения настроек DNS и без управления сертификатами.
patternstringобязательно- Шаблон, по которому должен запускаться ваш Worker, например,
"example.com".
- Шаблон, по которому должен запускаться ваш Worker, например,
custom_domainbooleanнеобязательно- Указывает, должен ли Worker размещаться на Custom Domain, а не на route. По умолчанию:
false.
- Указывает, должен ли Worker размещаться на Custom Domain, а не на route. По умолчанию:
Пример:
{
"routes": [
{
"pattern": "shop.example.com",
"custom_domain": true,
},
],
}[[routes]]
pattern = "shop.example.com"
custom_domain = trueМаршруты
Маршруты позволяют сопоставить шаблон URL с Worker. Маршрут можно настроить как маршрут по zone ID, маршрут по zone name или простой маршрут.
Маршрут Zone ID
patternstringобязательно- Шаблон, на котором может выполняться ваш Worker, например,
"example.com/*".
- Шаблон, на котором может выполняться ваш Worker, например,
zone_idstringобязательно- ID зоны, которую ваш
patternсвязан. См. Найдите ID зоны и аккаунта.
- ID зоны, которую ваш
Пример:
{
"routes": [
{
"pattern": "subdomain.example.com/*",
"zone_id": "<YOUR_ZONE_ID>",
},
],
}[[routes]]
pattern = "subdomain.example.com/*"
zone_id = "<YOUR_ZONE_ID>"Маршрут по имени зоны
patternstringобязательно- Шаблон, по которому должен запускаться ваш Worker, например,
"example.com/*".
- Шаблон, по которому должен запускаться ваш Worker, например,
zone_namestringобязательно- Имя зоны, к которой относится ваш
patternсвязан. Если вы используете API-токены, для этого потребуетсяAccountscope.
- Имя зоны, к которой относится ваш
Пример:
{
"routes": [
{
"pattern": "subdomain.example.com/*",
"zone_name": "example.com",
},
],
}[[routes]]
pattern = "subdomain.example.com/*"
zone_name = "example.com"Простой маршрут
Это простой маршрут, для которого требуется только шаблон.
Пример:
{
"route": "example.com/*",
}route = "example.com/*"workers.dev
Учётные записи Cloudflare Workers включают workers.dev поддомен, который можно настроить в Cloudflare dashboard.
workers_devbooleanнеобязательно- Работает ли Worker на пользовательском
workers.devподдомен аккаунта. По умолчаниюtrue.
- Работает ли Worker на пользовательском
{
"workers_dev": false,
}workers_dev = falseТриггеры
Триггеры позволяют определить cron выражение для вызова вашего Worker scheduled функция. См. Поддерживаемые cron-выражения.
cronsstring[]обязательно- Массив
cronвыражения. - Чтобы отключить Cron Trigger, задайте
crons = []. Если закомментироватьcronsключ не отключает Cron Trigger.
- Массив
Пример:
{
"triggers": {
"crons": ["* * * * *"],
},
}[triggers]
crons = [ "* * * * *" ]Observability
Observability настройка позволяет автоматически принимать, хранить, фильтровать и анализировать данные журналов, поступающие от Cloudflare Workers, прямо на панели управления вашего Cloudflare Worker.
enabledbooleanобязательно- Если задано значение
trueдля Worker, логи Worker сохраняются. По умолчанию используетсяtrueдля всех новых Workers.
- Если задано значение
head_sampling_ratenumberнеобязательно- Число от 0 до 1, где 0 означает, что не логируется ни один запрос из ста, а 1 означает, что логируются все запросы. Если
head_sampling_rateне указан, используется значение по умолчанию 1 (100%). Подробнее об этом см. сэмплирование на основе head.
- Число от 0 до 1, где 0 означает, что не логируется ни один запрос из ста, а 1 означает, что логируются все запросы. Если
Пример:
{
"observability": {
"enabled": true,
"head_sampling_rate": 0.1, // 10% of requests are logged
},
}[observability]
enabled = true
head_sampling_rate = 0.1Пользовательские сборки
Можно настроить собственный шаг сборки, который будет выполняться перед развёртыванием Worker. См. Пользовательские сборки.
commandstringнеобязательно- Команда, используемая для сборки вашего Worker. В Linux и macOS команда выполняется в
shоболочку иcmdоболочку для Windows.&&и||можно использовать операторы оболочки.
- Команда, используемая для сборки вашего Worker. В Linux и macOS команда выполняется в
cwdstringнеобязательно- Каталог, в котором выполняется команда.
watch_dirstring | string[]необязательно- Каталог, за изменениями в котором нужно следить при использовании
wrangler dev. По умолчанию используется текущий рабочий каталог.
- Каталог, за изменениями в котором нужно следить при использовании
Пример:
{
"build": {
"command": "npm run build",
"cwd": "build_cwd",
"watch_dir": "build_watch_dir",
},
}[build]
command = "npm run build"
cwd = "build_cwd"
watch_dir = "build_watch_dir"Лимиты
На поведение Worker во время выполнения можно наложить ограничения. Ограничения поддерживаются только для Стандартная модель использования. Ограничения применяются только при развёртывании в сети Cloudflare, а не при локальной разработке. Лимит CPU можно задать на уровне не более 300,000 миллисекунд (5 минут).
Каждый изолят обладает встроенной гибкостью для случаев, когда ваш Worker изредка превышает установленный лимит. Если Worker начинает регулярно достигать лимита, его выполнение будет прервано в соответствии с установленным лимитом.
cpu_msnumberнеобязательно- Максимальное допустимое время работы CPU на один вызов, в миллисекундах.
subrequestsnumberнеобязательно- Максимальное количество подзапросов, допустимое на один вызов. По умолчанию это значение равно 50 для бесплатных аккаунтов и 10,000 для платных. Максимум для бесплатного аккаунта: 50, для платного: 10,000,000. См. ограничения на подзапросы, где это описано подробнее.
Пример:
{
"limits": {
"cpu_ms": 100,
"subrequests": 150,
},
}[limits]
cpu_ms = 100
subrequests = 150Bindings
Browser Run
API запуска Workers в браузере позволяет разработчикам программно управлять экземпляром headless браузера и взаимодействовать с ним, а также создавать сценарии автоматизации для своих приложений и продуктов.
A привязка browser предоставит вашему Worker аутентифицированную конечную точку для взаимодействия с выделенным экземпляром браузера Chromium.
bindingstringобязательно- Имя привязки, используемое для обращения к привязке браузера. Указанное вами значение (строка) будет использоваться для обращения к этому headless-браузеру в вашем Worker. Имя привязки должно быть допустимое имя переменной JavaScript ↗. Например,
binding = "HEAD_LESS"илиbinding = "simulatedBrowser"оба варианта были бы допустимыми именами для привязки.
- Имя привязки, используемое для обращения к привязке браузера. Указанное вами значение (строка) будет использоваться для обращения к этому headless-браузеру в вашем Worker. Имя привязки должно быть допустимое имя переменной JavaScript ↗. Например,
Пример:
{
"browser": {
"binding": "<BINDING_NAME>",
},
}[browser]
binding = "<BINDING_NAME>"Базы данных D1
D1 это бессерверная SQL-база данных Cloudflare. Worker может выполнять запросы к базе данных D1 (или нескольким базам данных), создав привязка к каждой базе данных для D1 Workers Binding API.
Чтобы привязать базы данных D1 к Worker, присвойте массив из указанного ниже объекта [[d1_databases]] ключ.
-
bindingstringобязательно- Имя привязки, используемое для обращения к базе данных D1. Указанное вами значение (строка) будет использоваться для обращения к этой базе данных в вашем Worker. Имя привязки должно быть допустимое имя переменной JavaScript ↗. Например,
binding = "MY_DB"илиbinding = "productionDB"оба варианта были бы допустимыми именами для привязки.
- Имя привязки, используемое для обращения к базе данных D1. Указанное вами значение (строка) будет использоваться для обращения к этой базе данных в вашем Worker. Имя привязки должно быть допустимое имя переменной JavaScript ↗. Например,
-
database_namestringобязательно- Имя базы данных. Это понятное человеку название, которое помогает отличать разные базы данных друг от друга и задаётся при первом создании базы данных.
-
database_idstringобязательно- ID базы данных. ID базы данных становится доступен при первом использовании
wrangler d1 createили когда вы вызываетеwrangler d1 list, и однозначно идентифицирует вашу базу данных.
- ID базы данных. ID базы данных становится доступен при первом использовании
-
preview_database_idstringнеобязательно- Идентификатор предпросмотра этой базы данных D1. Если указан,
wrangler devиспользует этот ID. В противном случае используетсяdatabase_id. Этот параметр рекомендуется использовать приwrangler dev --remoteчтобы не использовать продакшен-базу данных.
- Идентификатор предпросмотра этой базы данных D1. Если указан,
-
migrations_dirstringнеобязательно- Каталог с файлами миграций. По умолчанию
wrangler d1 migrations createсоздаёт папку с именемmigrations. Можно использоватьmigrations_dirчтобы указать другую папку с файлами миграций (например, если у вас настроен monorepo и вы хотите использовать один экземпляр D1 для всех приложений/пакетов). - Подробнее см. в D1 Wrangler
migrationsкоманды и Миграции D1.
- Каталог с файлами миграций. По умолчанию
-
migrations_patternstringнеобязательно- Glob паттерн (относительно вашего файла конфигурации Wrangler), используемый для поиска файлов миграций. По умолчанию
migrations/*.sql. - Используйте это, чтобы включить вложенные layout, создаваемые ORM вроде Drizzle (например,
migrations/*/migration.sql). - Когда
migrations_patternзадан,migrations_dirтакже должен быть задан, иmigrations_patternдолжен начинаться с того же значения, что иmigrations_dirуказан. Каждая миграция записывается в таблицу миграций в виде пути относительноmigrations_dir.
- Glob паттерн (относительно вашего файла конфигурации Wrangler), используемый для поиска файлов миграций. По умолчанию
Пример:
{
"d1_databases": [
{
"binding": "<BINDING_NAME>",
"database_name": "<DATABASE_NAME>",
"database_id": "<DATABASE_ID>",
},
],
}[[d1_databases]]
binding = "<BINDING_NAME>"
database_name = "<DATABASE_NAME>"
database_id = "<DATABASE_ID>"Привязки пространств имён диспетчеризации (Workers for Platforms)
Привязки пространств имён диспетчеризации обеспечивают связь между Worker динамической диспетчеризации и пространство имён диспетчеризации. Привязки dispatch namespace используются в Workers for Platforms. Workers for Platforms помогает программно развёртывать бессерверные функции от имени ваших клиентов.
bindingstringобязательно- Имя привязки. Указанное вами значение (строка) будет использоваться для обращения к этой базе данных в вашем Worker. Имя привязки должно быть допустимое имя переменной JavaScript ↗. Например,
binding = "MY_NAMESPACE"илиbinding = "productionNamespace"оба варианта были бы допустимыми именами для привязки.
- Имя привязки. Указанное вами значение (строка) будет использоваться для обращения к этой базе данных в вашем Worker. Имя привязки должно быть допустимое имя переменной JavaScript ↗. Например,
namespacestringобязательноoutboundobjectнеобязательноservicestringобязательно Имя исходящий Worker для привязки.parametersarray необязательный Список параметров для передачи данных из вашего Worker динамической диспетчеризации к исходящий Worker.
{
"dispatch_namespaces": [
{
"binding": "<BINDING_NAME>",
"namespace": "<NAMESPACE_NAME>",
"outbound": {
"service": "<WORKER_NAME>",
"parameters": ["params_object"],
},
},
],
}[[dispatch_namespaces]]
binding = "<BINDING_NAME>"
namespace = "<NAMESPACE_NAME>"
[dispatch_namespaces.outbound]
service = "<WORKER_NAME>"
parameters = [ "params_object" ]Durable Objects
Durable Objects обеспечивают низкую задержку координации и согласованное хранение для платформы Workers.
Чтобы привязать Durable Objects к Worker, присвойте массив из указанного ниже объекта durable_objects.bindings ключ.
namestringобязательно- Имя привязки (binding), используемой для обращения к Durable Object.
class_namestringобязательно- Имя экспортируемого класса Durable Object.
script_namestringнеобязательно- Имя Worker, в котором определен Durable Object, если он находится за пределами текущего Worker. Этот параметр можно использовать как при локальной, так и при удаленной разработке. При локальной разработке внешний Worker необходимо запускать в отдельном процессе (через
wrangler dev). При удалённой разработке необходимо использовать соответствующую удалённую привязку.
- Имя Worker, в котором определен Durable Object, если он находится за пределами текущего Worker. Этот параметр можно использовать как при локальной, так и при удаленной разработке. При локальной разработке внешний Worker необходимо запускать в отдельном процессе (через
environmentstringнеобязательно- Окружение
script_nameдля привязки.
- Окружение
Пример:
{
"durable_objects": {
"bindings": [
{
"name": "<BINDING_NAME>",
"class_name": "<CLASS_NAME>",
},
],
},
}[[durable_objects.bindings]]
name = "<BINDING_NAME>"
class_name = "<CLASS_NAME>"Экспорты
exports поле объявляет классы Durable Object, которые экспортирует этот Worker, и их состояние жизненного цикла. См. Экспорт классов Durable Object.
Каждая запись в exports индексируется по имени класса Durable Object. Поля каждой записи:
typestringобязательно- Для записей классов Durable Object укажите значение
"durable-object".
- Для записей классов Durable Object укажите значение
statestringнеобязательно- Состояние жизненного цикла. Одно из
"created"(по умолчанию: активный класс),"deleted","renamed","transferred", или"expecting-transfer".
- Состояние жизненного цикла. Одно из
storagestringусловный- Обязательно, если
stateэто"created"или"expecting-transfer". Один из"sqlite"(рекомендуется; обязательно для новых пространств имён) или"legacy-kv"(только для существующих пространств имён на основе ключ-значение).
- Обязательно, если
renamed_tostringусловный- Обязательно, если
stateэто"renamed". Имя целевого класса, которое также должно присутствовать как действующая запись в том жеexportsmap.
- Обязательно, если
transferred_tostringусловный- Обязательно, если
stateэто"transferred". Имя целевого Worker, который получит пространство имён.
- Обязательно, если
transfer_fromstringусловный- Обязательно, если
stateэто"expecting-transfer". Имя исходного Worker, из которого переносится пространство имён.
- Обязательно, если
Пример:
{
"exports": {
"MyDurableObject": {
"type": "durable-object",
"storage": "sqlite",
},
"OldClass": {
"type": "durable-object",
"state": "deleted",
},
"OldName": {
"type": "durable-object",
"state": "renamed",
"renamed_to": "NewName",
},
"NewName": {
"type": "durable-object",
"storage": "sqlite",
},
},
}[exports.MyDurableObject]
type = "durable-object"
storage = "sqlite"
[exports.OldClass]
type = "durable-object"
state = "deleted"
[exports.OldName]
type = "durable-object"
state = "renamed"
renamed_to = "NewName"
[exports.NewName]
type = "durable-object"
storage = "sqlite"Миграции
При внесении изменений в классы Durable Object в Worker, использующем устаревший migrations массив, необходимо выполнить миграцию. См. Миграции классов Durable Object (устаревший способ).
tagstringобязательно- Уникальный идентификатор этой миграции.
new_sqlite_classesstring[]необязательно- Новые классы Durable Object, использующие хранилище на основе SQLite.
new_classesstring[]необязательно- Новые классы Durable Object с устаревшим хранилищем типа ключ-значение.
renamed_classes{from: string, to: string}[]необязательно- Классы Durable Object, которые переименовываются.
deleted_classesstring[]необязательно- Классы Durable Object, которые удаляются.
transferred_classes{from: string, from_script: string, to: string}[]необязательно- Классы Durable Object, переносимые из другого Worker.
Пример:
{
"migrations": [
{
"tag": "v1",
"new_sqlite_classes": [
// Array of new classes
"DurableObjectExample",
],
},
{
"tag": "v2", // Should be unique for each entry
"renamed_classes": [
// Array of rename directives
{
"from": "DurableObjectExample",
"to": "UpdatedName",
},
],
"deleted_classes": [
// Array of deleted class names
"DeprecatedClass",
],
},
],
}[[migrations]]
tag = "v1"
new_sqlite_classes = [ "DurableObjectExample" ]
[[migrations]]
tag = "v2"
deleted_classes = [ "DeprecatedClass" ]
[[migrations.renamed_classes]]
from = "DurableObjectExample"
to = "UpdatedName"Email bindings
Из Worker можно отправить письмо о его активности на адрес электронной почты, подтверждённый в Email Routing. Это полезно, например, когда вам нужно знать о срабатывании определённых типов событий.
Прежде чем привязать адрес электронной почты к своему Worker, необходимо включить Email Routing и иметь хотя бы один подтверждённый адрес электронной почты. Затем присвойте объекту (send_email) массив с нужным типом привязки электронной почты.
namestringобязательно- Имя привязки.
destination_addressstringнеобязательно- выбранный адрес электронной почты вы отправляете письма.
allowed_destination_addressesstring[]необязательно- список разрешённых адресов электронной почты вы отправляете письма.
В файл Wrangler можно добавить один или несколько типов привязок. При этом каждый атрибут должен располагаться на отдельной строке:
{
"send_email": [
{
"name": "<NAME_FOR_BINDING1>"
},
{
"name": "<NAME_FOR_BINDING2>",
"destination_address": "<YOUR_EMAIL>@example.com"
},
{
"name": "<NAME_FOR_BINDING3>",
"allowed_destination_addresses": [
"<YOUR_EMAIL>@example.com",
"<YOUR_EMAIL2>@example.com"
]
}
]
}[[send_email]]
name = "<NAME_FOR_BINDING1>"
[[send_email]]
name = "<NAME_FOR_BINDING2>"
destination_address = "<YOUR_EMAIL>@example.com"
[[send_email]]
name = "<NAME_FOR_BINDING3>"
allowed_destination_addresses = [ "<YOUR_EMAIL>@example.com", "<YOUR_EMAIL2>@example.com" ]Переменные окружения
Переменные окружения представляют собой тип привязки, который позволяет вам прикреплять текстовые строки или значения JSON к вашему Worker.
Пример:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "my-worker-dev",
"vars": {
"API_HOST": "example.com",
"API_ACCOUNT_ID": "example_user",
"SERVICE_X_DATA": {
"URL": "service-x-api.dev.example",
"MY_ID": 123
}
}
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker-dev"
[vars]
API_HOST = "example.com"
API_ACCOUNT_ID = "example_user"
[vars.SERVICE_X_DATA]
URL = "service-x-api.dev.example"
MY_ID = 123Hyperdrive
Hyperdrive привязки позволяют взаимодействовать с любой базой данных Postgres и выполнять к ней запросы прямо из Worker.
bindingstringобязательно- Имя привязки.
idstringобязательно- ID конфигурации Hyperdrive.
Пример:
{
// required for database drivers to function
"compatibility_flags": ["nodejs_compat_v2"],
"hyperdrive": [
{
"binding": "<BINDING_NAME>",
"id": "<ID>",
},
],
}compatibility_flags = [ "nodejs_compat_v2" ]
[[hyperdrive]]
binding = "<BINDING_NAME>"
id = "<ID>"Изображения
Cloudflare Images позволяет отправлять запросы на преобразование, чтобы оптимизировать, изменять размер и обрабатывать изображения, хранящиеся во внешних источниках.
Чтобы привязать Images к Worker, присвойте массив из указанного ниже объекта images ключ.
binding (обязательно). Имя привязки, используемой для обращения к Images API.
{
"images": {
"binding": "IMAGES", // i.e. available in your Worker on env.IMAGES
},
}[images]
binding = "IMAGES"Пространства имён KV
Workers KV представляет собой глобальное хранилище данных типа «ключ-значение» с низкой задержкой. Данные хранятся в небольшом числе централизованных дата-центров, а после обращения кешируются в дата-центрах Cloudflare.
Чтобы привязать пространства имен KV к Worker, присвойте массив из указанного ниже объекта kv_namespaces ключ.
bindingstringобязательно- Имя привязки, используемое для обращения к пространству имён KV.
idstringобязательно- ID пространства имен KV.
preview_idstringнеобязательно- Идентификатор предпросмотра этого пространства имён KV. Этот параметр является обязательно при использовании
wrangler dev --remoteчтобы разрабатывать с использованием удалённых ресурсов (но это не обязательно при использовании удаленные привязки). При локальной разработке это поле необязательно.wrangler devбудет использовать этот ID для пространства имён KV. В противном случаеwrangler devбудет использоватьid.
- Идентификатор предпросмотра этого пространства имён KV. Этот параметр является обязательно при использовании
Пример:
{
"kv_namespaces": [
{
"binding": "<BINDING_NAME1>",
"id": "<NAMESPACE_ID1>",
},
{
"binding": "<BINDING_NAME2>",
"id": "<NAMESPACE_ID2>",
},
],
}[[kv_namespaces]]
binding = "<BINDING_NAME1>"
id = "<NAMESPACE_ID1>"
[[kv_namespaces]]
binding = "<BINDING_NAME2>"
id = "<NAMESPACE_ID2>"Пространства имён AI Search
AI Search это управляемый сервис поиска Cloudflare. пространство имён представляет собой логическую группировку экземпляров AI Search. Привязка (binding) предоставляет полный доступ ко всем экземплярам в пределах пространства имён.
Чтобы привязать пространства имен AI Search к Worker, присвойте массив из указанного ниже объекта ai_search_namespaces ключ.
bindingstringобязательно- Имя привязки, используемое для обращения к пространству имён AI Search.
namespacestringобязательно- Имя пространства имен AI Search. Это
defaultпространство имён создаётся автоматически для каждого аккаунта. Если пространство имён не существует, Wrangler создаёт его при развёртывании.
- Имя пространства имен AI Search. Это
Пример:
{
"ai_search_namespaces": [
{
"binding": "<BINDING_NAME>",
"namespace": "default",
},
],
}[[ai_search_namespaces]]
binding = "<BINDING_NAME>"
namespace = "default"Инстансы AI Search
Чтобы привязаться напрямую к уже существующему AI Search экземпляр в пространство имён по умолчанию, присвойте массив приведённого ниже объекта для ai_search ключ. Эта привязка не поддерживает операции на уровне пространства имён, такие как list(), create(), или delete().
bindingstringобязательно- Имя привязки, используемое для обращения к экземпляру AI Search.
instance_namestringобязательно- Имя инстанса AI Search. На момент развертывания должно существовать в пространстве имен по умолчанию.
Пример:
{
"ai_search": [
{
"binding": "<BINDING_NAME>",
"instance_name": "<INSTANCE_NAME>",
},
],
}[[ai_search]]
binding = "<BINDING_NAME>"
instance_name = "<INSTANCE_NAME>"Queues
Queues это глобальный сервис очередей сообщений Cloudflare, который предоставляет гарантированная доставка и групповая обработка сообщений. Чтобы взаимодействовать с очередью через Workers, вам нужен Worker-производитель для отправки сообщений в очередь и Worker-потребитель для извлечения пакетов сообщений из Queue. Один Worker может как отправлять сообщения, так и получать их из нескольких Queues.
Чтобы привязать Queues к Worker-отправителю, присвойте массив из указанного ниже объекта [[queues.producers]] ключ.
queuestringобязательно- Имя очереди, отображаемое в панели управления Cloudflare.
bindingstringобязательно- Имя привязки, используемое для обращения к очереди в вашем Worker. Имя привязки должно быть допустимое имя переменной JavaScript ↗. Например,
binding = "MY_QUEUE"илиbinding = "productionQueue"оба варианта были бы допустимыми именами для привязки.
- Имя привязки, используемое для обращения к очереди в вашем Worker. Имя привязки должно быть допустимое имя переменной JavaScript ↗. Например,
delivery_delaynumberнеобязательно- Количество секунд для задержка сообщений, отправляемых в очередь по умолчанию. Это можно переопределить для отдельного сообщения или пакета.
Пример:
{
"queues": {
"producers": [
{
"binding": "<BINDING_NAME>",
"queue": "<QUEUE_NAME>",
"delivery_delay": 60, // Delay messages by 60 seconds before they are delivered to a consumer
},
],
},
}[[queues.producers]]
binding = "<BINDING_NAME>"
queue = "<QUEUE_NAME>"
delivery_delay = 60Чтобы привязать Queues к Worker-получателю, присвойте массив из указанного ниже объекта [[queues.consumers]] ключ.
queuestringобязательно- Имя очереди, отображаемое в панели управления Cloudflare.
max_batch_sizenumberнеобязательно- Максимальное количество сообщений, допустимое в одном пакете.
max_batch_timeoutnumberнеобязательно- Максимальное время ожидания в секундах, в течение которого сообщения могут заполнять пакет, прежде чем он будет отправлен Worker-потребителю.
max_retriesnumberнеобязательно- Максимальное количество повторных попыток обработки сообщения в случае сбоя или
retryAll()вызывается.
- Максимальное количество повторных попыток обработки сообщения в случае сбоя или
dead_letter_queuestringнеобязательно- Имя другой очереди, в которую сообщение будет отправлено, если его обработка не удалась хотя бы
max_retriesраз. - Если
dead_letter_queueне задан, сообщения, обработка которых постоянно завершается ошибкой, будут отбрасываться. - Если очереди с указанным именем не существует, она будет создана автоматически.
- Имя другой очереди, в которую сообщение будет отправлено, если его обработка не удалась хотя бы
max_concurrencynumberнеобязательно- Максимальное количество потребителей, которые могут выполняться одновременно. Если это значение не задано, количество вызовов будет масштабироваться до текущий поддерживаемый максимум.
- См. Параллельность потребителей с дополнительной информацией о том, как потребители автомасштабируются, особенно при повторных попытках доставки сообщений.
retry_delaynumberнеобязательно- Количество секунд для задержка перед повторной отправкой сообщений по умолчанию, прежде чем они будут повторно доставлены потребителю. Это можно переопределить для отдельного сообщения или пакета при повторной отправке сообщений.
Пример:
{
"queues": {
"consumers": [
{
"queue": "my-queue",
"max_batch_size": 10,
"max_batch_timeout": 30,
"max_retries": 10,
"dead_letter_queue": "my-queue-dlq",
"max_concurrency": 5,
"retry_delay": 120, // Delay retried messages by 2 minutes before re-attempting delivery
},
],
},
}[[queues.consumers]]
queue = "my-queue"
max_batch_size = 10
max_batch_timeout = 30
max_retries = 10
dead_letter_queue = "my-queue-dlq"
max_concurrency = 5
retry_delay = 120Бакеты R2
Cloudflare R2 Storage позволяет разработчикам хранить большие объемы неструктурированных данных без высокой платы за исходящий трафик, характерной для обычных облачных хранилищ.
Чтобы привязать бакеты R2 к Worker, присвойте массив из указанного ниже объекта r2_buckets ключ.
bindingstringобязательно- Имя привязки, используемое для обращения к бакету R2.
bucket_namestringобязательно- Имя этого бакета R2.
jurisdictionstringнеобязательно- Юрисдикция, в которой расположен этот бакет R2, если юрисдикция была указана. См. Юрисдикционные ограничения.
preview_bucket_namestringнеобязательно- Имя предпросмотра этого бакета R2. Если указано,
wrangler devбудет использовать это имя для бакета R2. В противном случае будет использованоbucket_name. Этот параметр обязателен при использованииwrangler dev --remote(но не требуется при использовании удаленные привязки).
- Имя предпросмотра этого бакета R2. Если указано,
Пример:
{
"r2_buckets": [
{
"binding": "<BINDING_NAME1>",
"bucket_name": "<BUCKET_NAME1>",
},
{
"binding": "<BINDING_NAME2>",
"bucket_name": "<BUCKET_NAME2>",
},
],
}[[r2_buckets]]
binding = "<BINDING_NAME1>"
bucket_name = "<BUCKET_NAME1>"
[[r2_buckets]]
binding = "<BINDING_NAME2>"
bucket_name = "<BUCKET_NAME2>"Индексы Vectorize
A Индекс Vectorize позволяет добавлять векторные эмбеддинги и выполнять по ним запросы для семантического поиска, классификации и других сценариев векторного поиска.
Чтобы привязать индексы Vectorize к Worker, присвойте массив из указанного ниже объекта vectorize ключ.
bindingstringобязательно- Имя привязки, используемое для обращения к привязанному индексу из кода вашего Worker.
index_namestringобязательно- Имя индекса для привязки.
Пример:
{
"vectorize": [
{
"binding": "<BINDING_NAME>",
"index_name": "<INDEX_NAME>",
},
],
}[[vectorize]]
binding = "<BINDING_NAME>"
index_name = "<INDEX_NAME>"Service bindings
Service binding позволяет отправлять HTTP-запросы другому Worker, минуя интернет. Запрос сразу вызывает целевой Worker, что снижает задержку по сравнению с запросом к стороннему сервису. См. О Service Bindings.
Чтобы привязать другие Workers к вашему Worker, присвойте массив из указанного ниже объекта services ключ.
bindingstringобязательно- Имя привязки, используемое для обращения к привязанному Worker.
servicestringобязательно- Имя Worker.
- Чтобы привязаться к Worker в определенном окружение, вам нужно добавить имя среды к имени Worker. Формат должен быть таким:
<worker-name>-<environment-name>. Например, чтобы привязаться к Worker с именемworker-nameв своёмstagingокружение,serviceследует установить в значениеworker-name-staging.
entrypointstringнеобязательно- Имя entrypoint для привязки. Если точка входа не указана, используется экспорт Worker по умолчанию.
Пример:
{
"services": [
{
"binding": "<BINDING_NAME>",
"service": "<WORKER_NAME>",
"entrypoint": "<ENTRYPOINT_NAME>",
},
],
}[[services]]
binding = "<BINDING_NAME>"
service = "<WORKER_NAME>"
entrypoint = "<ENTRYPOINT_NAME>"Static Assets
См. Assets.
Analytics Engine Datasets
Workers Analytics Engine предоставляет аналитику, наблюдаемость и журналирование данных из Workers. Записывайте точки данных в привязку вашего Worker, а затем запрашивайте данные с помощью SQL API.
Чтобы привязать наборы данных Analytics Engine к Worker, присвойте массив из указанного ниже объекта analytics_engine_datasets ключ.
bindingstringобязательно- Имя привязки, используемое для обращения к набору данных.
datasetstringнеобязательно- Имя набора данных, в который выполняется запись. Если не указано, по умолчанию используется то же имя, что и у привязки.
Пример:
{
"analytics_engine_datasets": [
{
"binding": "<BINDING_NAME>",
"dataset": "<DATASET_NAME>",
},
],
}[[analytics_engine_datasets]]
binding = "<BINDING_NAME>"
dataset = "<DATASET_NAME>"mTLS Certificates
Чтобы обмениваться данными с источниками, которым требуется аутентификация клиента, Worker может предъявлять сертификат mTLS в подзапросах. Wrangler предоставляет mtls-certificate команда для загрузки этих сертификатов и управления ими.
Чтобы создать привязка к сертификату mTLS для вашего Worker, присвойте массив объектов следующей структуры полю mtls_certificates ключ.
bindingstringобязательно- Имя привязки, используемое для обращения к сертификату.
certificate_idstringобязательно- ID сертификата. Wrangler отображает его через
mtls-certificate uploadиmtls-certificate listкоманды.
- ID сертификата. Wrangler отображает его через
Пример конфигурационного файла Wrangler с привязкой сертификата mTLS:
{
"mtls_certificates": [
{
"binding": "<BINDING_NAME1>",
"certificate_id": "<CERTIFICATE_ID1>",
},
{
"binding": "<BINDING_NAME2>",
"certificate_id": "<CERTIFICATE_ID2>",
},
],
}[[mtls_certificates]]
binding = "<BINDING_NAME1>"
certificate_id = "<CERTIFICATE_ID1>"
[[mtls_certificates]]
binding = "<BINDING_NAME2>"
certificate_id = "<CERTIFICATE_ID2>"Привязки сертификатов mTLS затем можно использовать во время выполнения для обращения к защищённым источникам через их fetch метод.
Workers AI
Workers AI позволяет запускать модели машинного обучения в сети Cloudflare прямо из вашего кода: из Workers, Pages или откуда угодно через REST API.
В отличие от других bindings, для проекта Worker можно использовать только один AI binding.
bindingstringобязательно- Имя привязки.
Пример:
{
"ai": {
"binding": "AI", // available in your Worker code on `env.AI`
},
}[ai]
binding = "AI"Workflows
Workflows позволяют создавать надежные многошаговые приложения на платформе Workers. Привязка Workflow дает вашему Worker возможность программно создавать экземпляры Workflow и управлять ими.
Чтобы привязать Workflows к Worker, присвойте массив из указанного ниже объекта workflows ключ.
bindingstringобязательно- Имя привязки, используемое для обращения к Workflow в вашем Worker. Имя привязки должно быть допустимое имя переменной JavaScript ↗. Например,
binding = "MY_WORKFLOW"было бы допустимым именем для привязки.
- Имя привязки, используемое для обращения к Workflow в вашем Worker. Имя привязки должно быть допустимое имя переменной JavaScript ↗. Например,
namestringобязательно- Имя Workflow.
class_namestringобязательно- Имя экспортированного класса Workflow. Класс
class_nameдолжен совпадать с именем класса Workflow, экспортируемого из кода вашего Worker.
- Имя экспортированного класса Workflow. Класс
script_namestringнеобязательно- Имя скрипта Worker, в котором определен класс Workflow. Требуется, только если Workflow определен в другом Worker, отличном от того, где настроена привязка.
schedulesstring[]необязательно- Список cron расписаний, которые автоматически создают новые экземпляры этого Workflow.
- Используйте это, если хотите запускать Workflow с регулярным интервалом без определения верхнеуровневого
triggers.cronsи отдельныйscheduledобработчик. - Используйте версию Wrangler, которая поддерживает расписания Workflow. Если ваша локальная схема не распознаёт
schedules, сначала обновите Wrangler.
Пример:
{
"workflows": [
{
"binding": "<BINDING_NAME>",
"name": "<WORKFLOW_NAME>",
"class_name": "<CLASS_NAME>",
},
],
}[[workflows]]
binding = "<BINDING_NAME>"
name = "<WORKFLOW_NAME>"
class_name = "<CLASS_NAME>"Assets
Static Assets позволяет разработчикам запускать front-end сайты на Workers. Можно настроить каталог ресурсов (assets), необязательную привязку runtime и параметры маршрутизации.
Для каждого Worker можно настроить только одну коллекцию ресурсов.
Следующие параметры доступны в разделе assets ключ.
directorystringнеобязательно- Папка со статическими ресурсами, которые нужно обслуживать.
- Не требуется, если вы используете Cloudflare Vite plugin, который будет автоматически указывать на результат сборки клиента.
bindingstringнеобязательно- Имя привязки, используемое для обращения к ресурсам. Необязательно и имеет смысл только тогда, когда для скрипта Worker задано
main.
- Имя привязки, используемое для обращения к ресурсам. Необязательно и имеет смысл только тогда, когда для скрипта Worker задано
run_worker_firstboolean | string[]необязательно, по умолчанию false- Управляет тем, будут ли статические ресурсы загружаться напрямую или будет вызываться скрипт Worker. Может быть логическим значением (
true/false) или массив строк с шаблонами маршрутов, поддерживающих glob-шаблоны (*) и шаблоны исключений (!префикс). Шаблоны должны начинаться с/или!/. Подробнее о получении статических файлов при использованииrun_worker_first.
- Управляет тем, будут ли статические ресурсы загружаться напрямую или будет вызываться скрипт Worker. Может быть логическим значением (
html_handling:"auto-trailing-slash" | "force-trailing-slash" | "drop-trailing-slash" | "none"необязательно, по умолчанию "auto-trailing-slash"- Определяет перенаправления и переписывание запросов для HTML-контента. Подробнее о доступных вариантах в маршрутизация assets.
not_found_handling:"single-page-application" | "404-page" | "none"необязательно, по умолчанию "none"- Определяет обработку запросов, которые не соответствуют ни одному ресурсу. Подробнее о доступных вариантах для поведение маршрутизации.
Пример:
{
"assets": {
"directory": "./public",
"binding": "ASSETS",
"html_handling": "force-trailing-slash",
"not_found_handling": "404-page",
},
}[assets]
directory = "./public"
binding = "ASSETS"
html_handling = "force-trailing-slash"
not_found_handling = "404-page"Также можно настроить run_worker_first с массивом шаблонов маршрутов:
{
"assets": {
"directory": "./public",
"binding": "ASSETS",
"run_worker_first": [
"/api/*", // API calls go to Worker first
"!/api/docs/*", // EXCEPTION: For /api/docs/*, try static assets first
],
},
}[assets]
directory = "./public"
binding = "ASSETS"
run_worker_first = [ "/api/*", "!/api/docs/*" ]Containers
Можно определить Containers для запуска рядом с вашим Worker с помощью containers поле.
Доступны следующие параметры:
imagestringобязательно- Образ для использования в контейнере. Это может быть либо локальный путь к
Dockerfile, в этом случаеwrangler deployсоберёт и отправит образ, либо это может быть ссылка на образ. Поддерживаемые реестры: Cloudflare Registry, Docker Hub, Amazon ECR и Google Artifact Registry. Подробнее см. Управление изображениями.
- Образ для использования в контейнере. Это может быть либо локальный путь к
class_namestringобязательно- Соответствующее имя класса Durable Object. Это сделает данный Durable Object объектом Durable Object с поддержкой контейнеров и позволит каждому экземпляру управлять контейнером. См. Методы контейнера Durable Object для получения подробностей.
instance_typestringнеобязательно- Тип инстанса контейнера. Он определяет объём памяти, CPU и диска, выделяемых
инстансу контейнера. На данный момент доступны следующие варианты:
"lite","basic","standard-1","standard-2","standard-3", а также"standard-4". Значение по умолчанию:"lite". Подробнее, см. документация по типам инстансов. - Чтобы указать собственный тип инстанса, см. здесь.
- Тип инстанса контейнера. Он определяет объём памяти, CPU и диска, выделяемых
инстансу контейнера. На данный момент доступны следующие варианты:
max_instancesstringнеобязательно- Максимальное количество одновременно работающих экземпляров контейнеров, которые вы хотите запускать в любой момент времени. Остановленные контейнеры в этот лимит не учитываются: у вас может быть больше экземпляров контейнеров, чем указано здесь, но одновременно активно работать может только это количество. Если запрос на запуск контейнера превысит этот лимит, такой запрос завершится ошибкой.
- По умолчанию: 20.
- Это значение применяется только при работе в продакшене в сети Cloudflare. Во время локальной разработки это ограничение не действует, поэтому вы можете запускать больше экземпляров, чем указано.
namestringнеобязательно- Имя вашего контейнера. Используется как идентификатор. По умолчанию оно будет представлять собой сочетание имени Worker, имени класса и вашего окружения.
image_build_contextstringнеобязательно- Контекст сборки приложения, по умолчанию это каталог
image.
- Контекст сборки приложения, по умолчанию это каталог
image_varsRecord<string, string>необязательно- Переменные сборки, эквивалентные использованию
--build-argсdocker build. Если нужно передать переменные окружения в контейнер во время среда выполнения, вам следует используйте секретные привязки илиenvVarsв классе Container.
- Переменные сборки, эквивалентные использованию
rollout_active_grace_periodnumberнеобязательно- Во время развертывание, минимальное количество секунд, в течение которых экземпляр контейнера уже должен быть подключён к своему Durable Object, прежде чем его можно будет заменить. По умолчанию
0. По-прежнему применяется с--containers-rollout=immediate.
- Во время развертывание, минимальное количество секунд, в течение которых экземпляр контейнера уже должен быть подключён к своему Durable Object, прежде чем его можно будет заменить. По умолчанию
rollout_step_percentagenumber | number[]необязательно- Процент экземпляров контейнеров, обновляемых на каждом развертывание шаг. Одно число задаёт этот размер шага (
5,10,20,25,50, или100). Массив должен содержать целые числа в порядке возрастания от10через100, заканчиваются на100, содержать не более 10 записей и не больше записей, чемmax_instances; значения суммируются. По умолчанию100еслиmax_instancesопущен или меньше2; в противном случае по умолчанию[10, 100]. Переопределите для одного деплоя с помощью--containers-rollout=immediate(единственный шаг 100%; не отменяет период ожидания).
- Процент экземпляров контейнеров, обновляемых на каждом развертывание шаг. Одно число задаёт этот размер шага (
sshobjectнеобязательно- Настройка SSH через Wrangler. См. SSH.
wrangler_sshobjectнеобязательно, устарело, используйте `ssh`- Устаревший псевдоним для
ssh. По-прежнему поддерживается для обратной совместимости.
- Устаревший псевдоним для
authorized_keysobject[]необязательно- Публичные ключи, которые нужно добавить в
authorized_keysфайл.
- Публичные ключи, которые нужно добавить в
constraintsobjectнеобязательно- Ограничения размещения для контейнера. См. Размещение Containers для получения подробностей.
constraints.regionsstring[]необязательно- Ограничьте размещение контейнеров конкретными географическими регионами. Допустимые значения:
"ENAM","WNAM","EEUR","WEUR","APAC","SAM","ME","OC","AFR".
- Ограничьте размещение контейнеров конкретными географическими регионами. Допустимые значения:
constraints.jurisdictionstringнеобязательно- Ограничьте контейнеры границами соответствия требованиям. Допустимые значения:
"eu","fedramp".
- Ограничьте контейнеры границами соответствия требованиям. Допустимые значения:
{
"containers": [
{
"class_name": "MyContainer",
"image": "./Dockerfile",
"max_instances": 10,
"instance_type": "basic", // Optional, defaults to "lite"
"image_vars": {
"FOO": "BAR",
},
"constraints": {
"regions": ["ENAM", "WNAM"],
"jurisdiction": "fedramp",
},
},
],
"durable_objects": {
"bindings": [
{
"name": "MY_CONTAINER",
"class_name": "MyContainer",
},
],
},
"migrations": [
{
"tag": "v1",
"new_sqlite_classes": ["MyContainer"],
},
],
}[[containers]]
class_name = "MyContainer"
image = "./Dockerfile"
max_instances = 10
instance_type = "basic"
[containers.image_vars]
FOO = "BAR"
[containers.constraints]
regions = [ "ENAM", "WNAM" ]
jurisdiction = "fedramp"
[[durable_objects.bindings]]
name = "MY_CONTAINER"
class_name = "MyContainer"
[[migrations]]
tag = "v1"
new_sqlite_classes = [ "MyContainer" ]Пользовательские типы инстансов
Вместо именованные типы экземпляров, вы можете задать пользовательский тип инстанса, отдельно настроив vCPU, память и диск. См. документация по лимитам об ограничениях для пользовательских типов инстансов.
Доступны следующие параметры:
vcpunumberнеобязательно- Количество vCPU, используемых контейнером. По умолчанию:
0.0625(1/16 vCPU).
- Количество vCPU, используемых контейнером. По умолчанию:
memory_mibnumberнеобязательно- Объем памяти, используемой контейнером, в MiB. Значение по умолчанию:
256.
- Объем памяти, используемой контейнером, в MiB. Значение по умолчанию:
disk_mbnumberнеобязательно- Диск, используемый контейнером, в МБ. По умолчанию
2000(2GB).
- Диск, используемый контейнером, в МБ. По умолчанию
{
"containers": [
{
"image": "./Dockerfile",
"instance_type": {
"vcpu": 1,
"memory_mib": 1024,
"disk_mb": 4000,
},
},
],
}[[containers]]
image = "./Dockerfile"
[containers.instance_type]
vcpu = 1
memory_mib = 1_024
disk_mb = 4_000SSH
Настройка SSH-доступа к экземпляру Container через Wrangler. Руководство по подключению к Containers по SSH см. в SSH.
Доступны следующие параметры:
enabledbooleanнеобязательно- Включён ли SSH через Wrangler. По умолчанию используется
true. Установите значениеfalseчтобы отключить доступ по SSH.
- Включён ли SSH через Wrangler. По умолчанию используется
portnumberнеобязательно- Порт, на котором должна работать служба SSH. По умолчанию:
22.
- Порт, на котором должна работать служба SSH. По умолчанию:
Авторизованные ключи
Авторизованный ключ представляет собой открытый ключ, который можно использовать для подключения к Container по SSH.
Ниже перечислены свойства ключа:
namestringобязательно- Отображаемое имя ключа.
public_keystringобязательно- Сам открытый ключ.
- В настоящее время только
ssh-ed25519ключ такого типа поддерживается.
Bundling
Wrangler может работать в двух режимах: режим сборки по умолчанию и --no-bundle режиме.
В режиме бандлинга Wrangler обходит все импорты вашего кода и создаёт единый JavaScript-файл «entry-point».
Импортированный исходный код «встраивается» в этот entry-point файл.
Кроме того, в Worker можно включать дополнительные модули, которые загружаются вместе с точкой входа.
Нужные для включения в Worker дополнительные модули указываются с помощью rules ключ, благодаря которому эти модули можно импортировать при вызове Worker.
Ключ rules ключ будет представлять собой массив из указанного ниже объекта.
typestringобязательно- Тип модуля. Должен быть одним из следующих:
ESModule,CommonJS,CompiledWasm,TextилиData.
- Тип модуля. Должен быть одним из следующих:
globsstring[]обязательно- Массив glob-правил (например,
["**/*.md"]). См. glob ↗.
- Массив glob-правил (например,
fallthroughbooleanнеобязательно- Если задано значение
trueдля правила, это позволяет иметь несколько правил для одного и того жеType.
- Если задано значение
Пример:
{
"rules": [
{
"type": "Text",
"globs": ["**/*.md"],
"fallthrough": true,
},
],
}[[rules]]
type = "Text"
globs = [ "**/*.md" ]
fallthrough = trueИмпорт модулей внутри Worker
Эти модули можно импортировать и использовать в Worker следующим образом:
import markdown from "./example.md";
export default {
async fetch() {
return new Response(markdown);
},
};Найдите дополнительные модули
По умолчанию Wrangler включает только те дополнительные модули, которые статически импортированы в исходном коде, как в примере выше.
Если задать find_additional_modules к true в вашем конфигурационном файле, Wrangler будет обходить дерево файлов ниже base_dir.
Любые файлы, соответствующие rules также будут включены в развёрнутый Worker как внешние модули без объединения в сборку.
base_dir по умолчанию использует каталог, содержащий ваш main точка входа.
См. https://developers.cloudflare.com/workers/wrangler/bundling/ ↗ с подробностями и примерами.
Python Workers
По умолчанию Python Workers включает в бандл файлы и папки в python_modules в корне вашего Worker (рядом с конфигурационным файлом wrangler).
Файлы в этом каталоге представляют собой добавленные через vendoring пакеты, и именно сюда инструмент pywrangler копирует пакеты. В некоторых случаях вы
можете обнаружить, что файлы в этой папке слишком велики, и если ваш worker не использует их, они лишь увеличивают размер бандла
без всякой необходимости.
Чтобы это исправить, можно исключить определенные файлы из сборки. Для этого используйте python_modules.excludes параметр, например:
{
"python_modules": {
"excludes": ["**/*.pyc", "**/__pycache__"],
},
}[python_modules]
excludes = [ "**/*.pyc", "**/__pycache__" ]Это исключит все файлы .pyc и __pycache__ каталоги внутри любого подкаталога в python_modules.
По умолчанию python_modules.excludes имеет значение ["**/*.pyc"], поэтому обязательно указывайте его при установке другого значения.
Настройки локальной разработки
Можно настроить различные аспекты локальной разработки, например локальный протокол или порт.
ipstringнеобязательно
- IP-адрес, который будет прослушивать локальный dev-сервер. По умолчанию используется
localhost.
portnumberнеобязательно
- Порт, который прослушивает локальный dev-сервер. Значение по умолчанию:
8787.
local_protocolstringнеобязательно- Протокол, который локальный dev-сервер использует для прослушивания запросов. По умолчанию
http.
- Протокол, который локальный dev-сервер использует для прослушивания запросов. По умолчанию
upstream_protocolstringнеобязательно- Протокол, по которому локальный dev-сервер перенаправляет запросы. По умолчанию
https.
- Протокол, по которому локальный dev-сервер перенаправляет запросы. По умолчанию
hoststringнеобязательно- Хост, на который перенаправляются запросы, по умолчанию используется хост первого
routeWorker.
- Хост, на который перенаправляются запросы, по умолчанию используется хост первого
enable_containersbooleanнеобязательно- Определяет, включать ли контейнеры во время локальной сессии разработки, если они настроены. Значение по умолчанию:
true. Если установлено значениеfalse, вы можете разрабатывать остальную часть приложения без Docker или другого инструмента для работы с контейнерами, если не вызываете код, взаимодействующий с контейнерами.
- Определяет, включать ли контейнеры во время локальной сессии разработки, если они настроены. Значение по умолчанию:
container_enginestringнеобязательно- Используется для локальной разработки Containers. Wrangler попытается автоматически найти нужный сокет для взаимодействия с вашим движком контейнеров. Если это не сработает (обычно это проявляется как ошибка
internal errorпри попытке подключения к вашему Container), можно попробовать задать путь к сокету с помощью этого параметра. Это также можно сделать через переменную окруженияDOCKER_HOST.
- Используется для локальной разработки Containers. Wrangler попытается автоматически найти нужный сокет для взаимодействия с вашим движком контейнеров. Если это не сработает (обычно это проявляется как ошибка
generate_typesbooleanнеобязательно- Генерирует типы на основе конфигурации вашего Worker. По умолчанию используется
false.
- Генерирует типы на основе конфигурации вашего Worker. По умолчанию используется
{
"dev": {
"ip": "192.168.1.1",
"port": 8080,
"local_protocol": "http",
},
}[dev]
ip = "192.168.1.1"
port = 8_080
local_protocol = "http"Секреты
Секреты являются типом binding, который позволяет прикрепление зашифрованных текстовых значений в ваш Worker.
secrets свойство конфигурации
secrets Свойство конфигурации позволяет указать в файле конфигурации Wrangler имена секретов, которые требуются вашему Worker. Обязательные секреты проверяются при локальной разработке и развёртывании и служат источником достоверных данных для генерации типов.
{
"secrets": {
"required": ["API_KEY", "DB_PASSWORD"],
},
}[secrets]
required = [ "API_KEY", "DB_PASSWORD" ]Генерация типов
Когда secrets задан на любом уровне конфигурации, wrangler types генерирует типизированные привязки на основе имён, перечисленных в secrets.required и больше не определяет имена секретов на основе .dev.vars или .env файлы. Это позволяет запускать генерацию типов в окружениях, где эти файлы отсутствуют.
Поддерживаются секреты для каждого окружения. Каждое именованное окружение создаёт свой собственный интерфейс, а агрегированный Env тип помечает секреты, которые присутствуют только в некоторых средах, как необязательные.
Развернуть
Когда secrets задан, wrangler deploy и wrangler versions upload проверьте, что все секреты в secrets.required настроены в Worker, прежде чем операция завершится успешно. Если каких-либо обязательных secrets не хватает, команда завершается ошибкой со списком secrets, которые нужно задать.
Локальная разработка
Разместите секреты для использования при локальной разработке либо в .dev.vars файл или .env файл, в том же каталоге, что и файл конфигурации Wrangler.
Эти файлы должны быть отформатированы с помощью dotenv ↗ синтаксис. Например:
SECRET_KEY="value"
API_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"Чтобы задать разные секреты для каждого окружения Cloudflare, создайте файлы с именами .dev.vars.<environment-name> или .env.<environment-name>.
Когда вы выбираете окружение Cloudflare в локальной разработке, соответствующий файл конкретного окружения загружается раньше общего .dev.vars (или .env) файл.
- При использовании
.dev.vars.<environment-name>файлов все секреты должны быть определены отдельно для каждого окружения. Если.dev.vars.<environment-name>существует, то будет загружен только он;.dev.varsфайл не будет загружен. - В противоположность этому все соответствующие
.envфайлов, и их значения объединяются. Для каждой переменной используется значение из наиболее специфичного файла в следующем порядке приоритета:.env.<environment-name>.local(наиболее специфичный).env.local.env.<environment-name>.env(наименее специфичный)
Псевдонимы модулей
Wrangler можно настроить так, чтобы все обращения к импорту определённого пакета заменялись выбранным вами модулем, задав alias поле:
{
"alias": {
"foo": "./replacement-module-filepath",
},
}[alias]
foo = "./replacement-module-filepath"export const bar = "baz";При такой конфигурации любые вызовы import или require() модуль foo будет иметь псевдоним, указывающий на ваш модуль замены:
import { bar } from "foo";
console.log(bar); // returns "baz"Проблемы с Bundling
При сборке Worker с помощью Wrangler разрешение зависимостей иногда завершается ошибкой. Простое решение этой проблемы: настроить алиас для таких зависимостей.
Однако прежде чем это делать, убедитесь, что пакет правильно установлен в вашем проекте: либо как прямая зависимость в package.json или как транзитивная зависимость.
Если алиас является подходящим решением проблемы с зависимостью, у вас есть несколько вариантов:
- Альтернативная реализация : реализуйте логику модуля так, чтобы она была совместима с Worker, сохранив при этом всю функциональность.
- No-op модуль : если логика модуля не используется или не имеет значения, укажите в качестве алиаса пустой файл. Тогда модуль ничего не будет делать, а проблема со сборкой будет устранена.
- Ошибка Runtime : если логика модуля не используется и Worker не должен пытаться её использовать (например, из-за уязвимостей безопасности), укажите в качестве алиаса файл с единственной инструкцией верхнего уровня
throwинструкция. Это устраняет проблему сборки, гарантируя при этом, что модуль фактически никогда не используется.
Пример: алиасы для зависимостей из NPM
С помощью module aliasing можно предоставить реализацию NPM-пакета, который не работает в Workers, даже если вы используете этот NPM-пакет лишь косвенно, как зависимость одной из зависимостей вашего Worker.
Например, некоторые пакеты NPM зависят от node-fetch ↗, пакет, который предоставлял полифилл (polyfill) для fetch() API, до того как это было встроено в Node.js.
node-fetch не нужен в Workers, поскольку fetch() API предоставляется средой выполнения Workers. А node-fetch не работает в Workers, поскольку зависит от пока не поддерживаемых Node.js API из http/https модулей.
Можно задать псевдоним для всех импортов node-fetch чтобы вместо этого указывать напрямую на fetch() API, встроенный в среду выполнения Workers:
{
"alias": {
"node-fetch": "./fetch-polyfill",
},
}[alias]
node-fetch = "./fetch-polyfill"export default fetch;Пример: алиасы для API Node.js
С помощью module aliasing можно предоставить собственную реализацию полифилла для API Node.js, который пока недоступен в Workers runtime.
Например, предположим, что используемый вами пакет NPM вызывает fs.readFile ↗. Вы можете задать псевдоним для модуля fs, добавив следующее в файл конфигурации Wrangler вашего Worker:
{
"alias": {
"fs": "./fs-polyfill",
},
}[alias]
fs = "./fs-polyfill"export function readFile() {
// ...
}Во многих случаях это позволяет реализовать ровно ту часть API, которой достаточно для работы зависимости. Подробнее о поддержке Node.js API в Cloudflare Workers можно узнать на Страница документации по Node.js API Cloudflare Workers.
Source maps
Source maps преобразовывать скомпилированный и минифицированный код обратно в исходный код, который вы написали. Source map объединяются со стеком вызовов, возвращаемым средой выполнения JavaScript, чтобы показать вам стек вызовов.
upload_source_mapsboolean- Когда
upload_source_mapsимеет значениеtrue, Wrangler автоматически создаст и загрузит файлы source map при выполненииwrangler deployилиwrangler versions deploy.
- Когда
Пример:
{
"upload_source_maps": true,
}upload_source_maps = trueWorkers Sites
Workers Sites позволяет размещать на Workers статические сайты, а также динамические сайты на фреймворках вроде Vue или React.
bucketstringобязательно- Каталог со статическими ресурсами. Путь должен быть указан относительно файла конфигурации Wrangler.
includestring[]необязательно- Исчерпывающий список
.gitignore-подобные шаблоны, соответствующие именам файлов или каталогов в расположении вашего bucket. Будут загружены только совпавшие элементы.
- Исчерпывающий список
excludestring[]необязательно- Список
.gitignore-подобные шаблоны, соответствующие файлам или каталогам в вашем bucket, которые следует исключить из загрузки.
- Список
Пример:
{
"site": {
"bucket": "./public",
"include": ["upload_dir"],
"exclude": ["ignore_dir"],
},
}[site]
bucket = "./public"
include = [ "upload_dir" ]
exclude = [ "ignore_dir" ]Поддержка прокси
В корпоративных сетях часто используются прокси-серверы, что иногда приводит к проблемам с подключением. Чтобы настроить Wrangler с нужными параметрами прокси, добавьте следующие переменные окружения:
https_proxyHTTPS_PROXYhttp_proxyHTTP_PROXY
Чтобы настроить это в macOS, добавьте HTTP_PROXY=http://<YOUR_PROXY_HOST>:<YOUR_PROXY_PORT> перед командами Wrangler.
Пример:
$ HTTP_PROXY=http://localhost:8080 wrangler devЕсли ваш IT-отдел настроил параметры прокси на вашем компьютере, учтите, что при исходящих запросах Wrangler будет использовать первую непустую переменную окружения из этого списка.
Например, если оба https_proxy и http_proxy заданы, Wrangler будет использовать только https_proxy для исходящих запросов.
Источник истины
Мы рекомендуем считать файл конфигурации Wrangler основным источником данных о конфигурации Worker и не вносить изменения в Worker через панель управления Cloudflare, если вы используете Wrangler.
Если вы вносите изменения в Worker через дашборд Cloudflare, дашборд создаст фрагмент TOML, который нужно скопировать в файл конфигурации Wrangler. Это поможет сохранять файл конфигурации Wrangler всегда актуальным.
Если вы измените переменные окружения в дашборде Cloudflare, при следующем развертывании Wrangler перезапишет их. Чтобы отключить такое поведение, добавьте keep_vars = true в файл конфигурации Wrangler.
Если вы измените маршруты в дашборде, при следующем развертывании Wrangler заменит их маршрутами, заданными в конфигурационном файле Wrangler. Чтобы управлять маршрутами только через дашборд Cloudflare, удалите ключи route и routes из конфигурационного файла Wrangler. Затем добавьте workers_dev = false в файл конфигурации Wrangler. Дополнительные сведения см. в Устаревшие функции.
Wrangler не удалит ваши секреты (зашифрованные переменные окружения), если вы не выполните wrangler secret delete <key>.
Сгенерированная конфигурация Wrangler
Некоторые инструменты фреймворков или пользовательские процессы предварительной сборки создают изменённую конфигурацию Wrangler, которая затем используется для развёртывания кода Worker.
В этом случае инструмент может также создавать специальный .wrangler/deploy/config.json файл, который перенаправляет Wrangler на использование сгенерированной конфигурации вместо исходной, пользовательской.
Wrangler использует эту сгенерированную конфигурацию только для следующих команд, связанных с развёртыванием и разработкой:
wrangler deploywrangler devwrangler versions uploadwrangler versions deploywrangler pages deploywrangler pages functions build
При выполнении этих команд Wrangler ищет вверх по дереву каталогов от текущего рабочего каталога файл по пути .wrangler/deploy/config.json.
Этот файл должен содержать только один JSON объект следующего вида:
{ "configPath": "../../path/to/wrangler.jsonc" }Когда этот config.json файл существует, Wrangler будет следовать configPath (относительно .wrangler/deploy/config.json файл), чтобы найти сгенерированный файл конфигурации Wrangler для загрузки и использования в текущей команде.
Wrangler выведет сообщение пользователю о том, что конфигурация была перенаправлена в файл, отличный от пользовательского файла конфигурации.
Сгенерированный файл конфигурации не должен содержать окружения. Это связано с тем, что такой файл, если он нужен, должен создаваться на этапе сборки, которая уже ориентирована на конкретную среду. Такие инструменты сборки должны генерировать отдельные файлы конфигурации развёртывания для разных сред.
Пример пользовательского инструмента сборки
Типичный пример использования перенаправленной конфигурации: пользовательский инструмент сборки или фреймворк хочет изменить конфигурацию пользователя, применяемую при развертывании, создавая новую конфигурацию в dist каталог.
-
Прежде всего пользователь пишет код, использующий ресурсы Cloudflare Workers, настроенные через файл конфигурации Wrangler, как показано ниже:
{ "$schema": "./node_modules/wrangler/config-schema.json", "name": "my-worker", "main": "src/index.ts", "vars": { "MY_VARIABLE": "production variable", }, "env": { "staging": { "vars": { "MY_VARIABLE": "staging variable", }, }, }, }"$schema" = "./node_modules/wrangler/config-schema.json" name = "my-worker" main = "src/index.ts" [vars] MY_VARIABLE = "production variable" [env.staging.vars] MY_VARIABLE = "staging variable"Эта конфигурация указывает на
mainв точке входа кода пользователя и определяетMY_VARIABLEпеременную в двух разных окружениях. -
Затем пользователь запускает пользовательскую сборку для заданного окружения (например,
staging). Это приведёт к чтению файла конфигурации Wrangler пользователя для поиска точки входа исходного кода и настроек, специфичных для среды:> my-tool build --env=staging -
my-toolгенерируетdistкаталог, содержащий как скомпилированный код, так и новый сгенерированный файл конфигурации развертывания, включающий только настройки для указанного окружения. Он также создает.wrangler/deploy/config.jsonфайл, который перенаправляет Wrangler на новый сгенерированный файл конфигурации развертывания:- dist/
- index.js
- wrangler.jsonc
- .wrangler/
- deploy/
- config.json
- deploy/
- dist/
Сгенерированный dist/wrangler.jsonc может содержать:
{
"name": "my-worker",
"main": "./index.js",
"vars": {
"MY_VARIABLE": "staging variable"
}
}Теперь main свойство указывает на точку входа сгенерированного кода, окружение не определено,
а MY_VARIABLE переменная разрешается в значение окружения staging.
И .wrangler/deploy/config.json содержит путь к сгенерированному файлу конфигурации:
{
"configPath": "../../dist/wrangler.jsonc"
}