← Cloudflare Workers / workers / wrangler
Устаревшие функции
Ознакомьтесь с различиями между версиями Wrangler, в частности с устаревшими и критическими изменениями.
Wrangler v4
Workers Sites
Использование Workers Sites считается устаревшим. Вместо этого мы рекомендуем перейти на Workers Static Assets. Поддержка Workers Sites в Wrangler будет удалена в одной из будущих версий Wrangler.
Service environments
Использование Service Environments ↗, включено через legacy_env свойство в конфигурации Wrangler, устарело. Взамен рекомендуем перейти на Окружения Wrangler. Поддержка Service Environments в Wrangler будет удалена в одной из будущих версий Wrangler.
Wrangler v3
Устаревшие команды
Начиная с Wrangler v3 следующие команды считаются устаревшими. В одной из будущих версий Wrangler они будут полностью удалены.
generate
wrangler generate команда устарела, но всё ещё работает в v3. wrangler generate будет полностью удалён в v4.
Используйте npm create cloudflare@latest для новых проектов Workers и Pages.
publish
wrangler publish команда устарела, но всё ещё работает в v3. wrangler publish будет полностью удалён в v4.
Используйте npx wrangler deploy чтобы развернуть Workers.
pages publish
wrangler pages publish команда устарела, но всё ещё работает в v3. wrangler pages publish будет полностью удалён в v4.
Используйте wrangler pages deploy чтобы развернуть Pages.
version
Вместо этого используйте wrangler --version чтобы проверить текущую версию Wrangler.
Устаревшие параметры
--experimental-local
wrangler dev в v3 по умолчанию является локальным, поэтому этот параметр больше не нужен.
--local
wrangler dev в v3 по умолчанию является локальным, поэтому этот параметр больше не нужен.
--persist
wrangler dev по умолчанию автоматически сохраняет данные, поэтому эта опция больше не нужна.
-- <command>, --proxy, а также --script-path в wrangler pages dev
Эти параметры предотвращают wrangler pages dev точно эмулировать поведение production при раздаче статических ресурсов, поэтому они были признаны устаревшими. Вместо того чтобы полагаться на проксирование Wrangler через какой-то другой сторонний dev-сервер, вы можете добиться более точной эмуляции, собрав статические ресурсы в каталог и указав Wrangler на этот каталог с помощью wrangler pages dev <directory>.
--legacy-assets и legacy_assets свойство файла конфигурации
Мы рекомендуем переход на Workers assets ↗
--node-compat и node_compat свойство файла конфигурации
Вместо этого используйте nodejs_compat флаг совместимости ↗. Сюда входит функциональность из устаревшего node_compat полифиллы и нативно реализованные Node.js API.
usage_model свойство файла конфигурации
Это больше не имеет эффекта после развертывание Workers Standard Pricing ↗.
Wrangler v2
Wrangler v2 добавляет новые поля конфигурации и новые функции для разработки и развёртывания Worker, а также помечает некоторые избыточные поля как устаревшие.
wrangler.tomlбольше не является обязательным.devиpublishпринимает аргументы командной строки.tailможно запускать под произвольными именами Worker.initсоздаёт шаблон проекта.- JSON-привязки для
vars. - Локальный режим для
wrangler dev. - Система модулей (для форматов Workers modules и service worker).
- DevTools.
- Поддержка TypeScript.
- Предоставление доступа к среде разработки в интернете.
- Более широкая совместимость с платформами.
- Горячие клавиши разработчика.
- Улучшенная проверка конфигурации.
В следующем видео рассказывается об основных изменениях в Wrangler v2 и показано, как Wrangler v2 может ускорить вашу работу.
Типичные случаи устаревания
Список часто встречающихся полей, которые больше не требуются, приведён ниже.
typeбольше не требуется. Wrangler автоматически определит правильный тип проекта.zone_idбольше не требуется. Его можно определить непосредственно из маршрутов.build.upload.formatбольше не используется. Формат теперь определяется автоматически по коду.build.upload.mainиbuild.upload.dirбольше не требуются. Используйте верхнеуровневыйmainполе, которое теперь служит точкой входа для Worker.site.entry-pointбольше не требуется. Точку входа следует указывать черезmainполе.webpack_configиwebpackсвойства больше не поддерживаются. См. Перенос проектов на базе webpack с Wrangler версии 1. Ниже приведены команды Wrangler v1, которые больше не поддерживаются:wrangler preview- Используйтеwrangler devкоманду, чтобы запустить Worker в локальном окружении.wrangler generate- Если вы хотите использовать стартовый шаблон, склонируйте его репозиторий GitHub и инициализируйте вручную.wrangler route- Маршруты определяются в конфигурационный файл Wrangler.wrangler report- Если вы обнаружили ошибку, сообщите о ней на Проблемы Wrangler ↗.wrangler build- Если вам нужен доступ к результату сборки Worker, используйтеwrangler deploy --outdir=path/to/output.
Новые поля
Это новые поля, которые можно добавить в ваш конфигурационный файл Wrangler.
-
main:string, необязательноmainполе используется для указания точки входа Worker. Она может быть в устоявшемся формате service worker или в более новом, предпочтительном формате модулей. Теперь точка входа обязательна и может быть указана либо черезmainполе, либо передать напрямую в командной строке, например,wrangler dev index.js. Это поле заменяет устаревшееbuild.upload.mainполе (которое применялось только к Workers в формате модулей). -
rules:array, необязательноrulesполе представляет собой массив сопоставлений между типами модулей и шаблонами файлов. Оно указывает Wrangler интерпретировать определённые файлы иначе, чем JavaScript. Например, это полезно для чтения текстоподобного содержимого как текстовых файлов или скомпилированного WASM как готового к созданию экземпляра и выполнению. Эти правила можно применять к Workers как в устоявшемся формате service worker, так и в более новом формате модулей. Это поле заменяет устаревшееbuild.upload.rulesполе (которое применялось только к Workers в формате модулей).
Необязательные поля
Несколько полей конфигурации, которые ранее были обязательными, теперь в определенных ситуациях являются необязательными. Они могут либо определяться автоматически, либо добавляться в качестве оптимизации. Начиная с Wrangler v2 ни одно поле больше не является обязательным, и вы можете постепенно добавлять конфигурацию по мере необходимости.
-
name:stringnameполе конфигурации больше не обязательно дляwrangler dev, либо любой изwrangler kv:*команды. Кроме того, это можно передать как аргумент командной строки в виде--name <name>. Это по-прежнему требуется дляwrangler deploy. -
account_id:stringaccount_idполе не требуется ни для одной из команд. Соответствующие команды проверяют, выполнен ли у вас вход, и если нет, предлагают войти. После входа команда использует идентификатор вашей учётной записи и не будет запрашивать его снова, пока не истечёт сеанс входа. Если у вас несколько идентификаторов учётных записей, вам будет предложено выбрать нужный из списка.По прежнему можно настроить
account_idв файле Wrangler, либо в виде переменной окруженияCLOUDFLARE_ACCOUNT_ID. Это ускоряет запуск и пропускает список вариантов выбора, если у вас несколько ID. ФлагCLOUDFLARE_API_TOKENпеременная окружения также полезна в ситуациях, когда невозможен интерактивный вход. Подробнее см. Запуск в CI/CD. -
workers_devboolean, по умолчанию:trueкогда маршруты отсутствуютworkers_devполе используется, чтобы указать, что Worker должен быть опубликован в*.workers.devподдомен. Например, для Worker с именемmy-workerи ранее настроенный*.workers.devподдоменusername, Worker будет опубликован вmy-worker.username.workers.dev.com. Это поле необязательное, по умолчанию используетсяtrueкогдаrouteилиroutesне настроены. Когда routes заданы, по умолчанию используетсяfalse. Если вы не хотите ни публиковать его в*.workers.devподдомен, ни какие-либо маршруты, задайтеworkers_devкfalse. Это полезно, когда вы публикуете Worker как самостоятельный сервис, доступ к которому возможен только из другого Worker с помощью (services).
Устаревшие поля (non-breaking)
Несколько полей конфигурации устарели, но их наличие пока не является критическим изменением. Рекомендуется прочитать предупреждающие сообщения и следовать инструкциям по переходу на новую конфигурацию. В будущей версии они будут удалены и перестанут работать.
-
zone_id:string, устарелоzone_idполе устарело и будет удалено в одном из будущих релизов. Теперь оно определяется на основеroute/routes, и, при необходимости, изdev.hostпри использованииwrangler dev. Это также упрощает развёртывание одного Worker на нескольких доменах. -
build.upload:object, устарелоbuild.uploadполе устарело и будет удалено в одном из будущих релизов. Его использование приводит к предупреждению с рекомендациями по изменению файла конфигурации, чтобы устранить эти предупреждения.build.upload.main/build.upload.dirзаменяются наmainполя и применимы как к Workers в формате service worker, так и к Workers в формате modules.build.upload.rulesзаменяетсяrulesполе и применимо как к Workers в формате service worker, так и в формате модулей.build.upload.formatбольше не указывается и автоматически определяетсяwrangler.
Устаревшие поля (breaking)
Несколько полей конфигурации устарели и больше не будут работать как ожидается. Рекомендуется прочитать сообщения об ошибках и следовать инструкциям по переходу на новую конфигурацию.
-
site.entry-point:string, устарелоsite.entry-pointконфигурация использовалась для указания точки входа для Workers с[site]конфигурацию. Она заменена параметром верхнего уровняmainполе. -
type:rust|javascript|webpack, устарелоtypeконфигурация использовалась для указания типа Worker. С тех пор она стала избыточной и теперь определяется автоматически по способу использования. Если вы использовалиtype = "webpack"(и необязательныйwebpack_configполе), вам следует ознакомиться с руководство по миграции с webpack чтобы изменить проект и вместо этого использовать собственную сборку.
Устаревшие команды
Начиная с Wrangler v2 следующие команды считаются устаревшими.
build
wrangler build команда больше не используется для сборки Worker.
Аналогичной функциональности можно добиться wrangler publish --dry-run --outdir=path/to/build.
config
wrangler config команда больше не используется для аутентификации через API-токен.
Используйте wrangler login / wrangler logout для управления аутентификацией OAuth либо передайте токен API через CLOUDFLARE_API_TOKEN переменную окружения.
preview
wrangler preview команда больше не используется для создания временного экземпляра Worker для предпросмотра.
Попробуйте использовать wrangler dev чтобы опробовать worker в процессе разработки.
поддомен
wrangler subdomain команда больше не используется для создания workers.dev поддомен.
Создайте workers.dev поддомен в Workers & Pages > выберите Worker > Your subdomain > Изменение.
маршрут
wrangler route команда больше не используется для настройки маршрута Worker.
Маршруты задаются в конфигурационный файл Wrangler.
Другое устаревшее поведение
-
Маршруты, заданные в дашборде Cloudflare, не будут добавлены вместе с маршрутами, заданными в Wrangler. Маршруты, заданные в Wrangler, являются
routeилиroutesключ в вашемwrangler.toml. Если заданы оба варианта, используются только маршруты, определённые вwrangler.tomlбудет действителен. Чтобы управлять маршрутами только через панель управления Cloudflare, удалите всеrouteиroutesключи из и добавьтеworkers_dev = falseв файл Wrangler. -
Wrangler больше не будет использовать
index.jsв каталоге, гдеwrangler devвызывается как точка входа в Worker. Используйтеmainполе конфигурации, либо явно передать его как аргумент командной строки, например:wrangler dev index.js. -
Wrangler больше не будет считать голые спецификаторы (bare specifiers) именами файлов, если они не представлены в виде пути. Например, в такой папке:
project ├── index.js └── some-dependency.jsгде содержимое
index.jsследующий:import SomeDependency from "some-dependency.js"; addEventListener("fetch", (event) => { // ... });Wrangler v1 определял
import SomeDependency from "some-dependency.js";в файлsome-dependency.js. Это также будет работать в Wrangler v2, но при этом будет выводиться предупреждение об устаревании. В будущем это приведёт к ошибке. Вместо этого перепишите импорт так, чтобы он явно указывал на относительный путь, например:- import SomeDependency from "some-dependency.js"; + import SomeDependency from "./some-dependency.js";
Таблицы сравнения Wrangler v1 и v2
Команды
| Команда | v1 | v2 | Примечания |
|---|---|---|---|
publish |
✅ | ✅ | |
dev |
✅ | ✅ | |
preview |
✅ | ❌ | Удалено, используйте dev взамен. |
init |
✅ | ✅ | |
generate |
✅ | ❌ | Удалено, используйте git clone взамен. |
build |
✅ | ❌ | Удалено, вместо этого используйте собственный скрипт сборки. |
secret |
✅ | ✅ | |
route |
✅ | ❌ | Удалено, используйте publish взамен. |
tail |
✅ | ✅ | |
kv |
✅ | ✅ | |
r2 |
🚧 | ✅ | Появилось в Wrangler v1.19.8. |
pages |
❌ | ✅ | |
config |
✅ | ❓ | |
login |
✅ | ✅ | |
logout |
✅ | ✅ | |
whoami |
✅ | ✅ | |
subdomain |
✅ | ❓ | |
report |
✅ | ❌ | Удалено, отчёты об ошибках формируются в интерактивном режиме. |
Конфигурация
| Свойство | v1 | v2 | Примечания |
|---|---|---|---|
type = "webpack" |
✅ | ❌ | Удалено, см. это руководство для миграции. |
type = "rust" |
✅ | ❌ | Удалено, используйте workers-rs ↗ взамен. |
type = "javascript" |
✅ | 🚧 | Больше не требуется, можно не указывать. |
Возможности
| Возможность | v1 | v2 | Примечания |
|---|---|---|---|
| TypeScript | ❌ | ✅ | Wrangler можно передать файл TypeScript, и он автоматически транспилирует его в JavaScript с помощью esbuild ↗ «под капотом». |
| Локальный режим | ❌ | ✅ | wrangler dev --local запустит ваш Worker на локальной машине вместо нашей сети. Это работает на основе Miniflare ↗. |