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

Переход с Wrangler v3 на v4

Wrangler v4 представляет собой крупный релиз, посвящённый обновлению базовых систем и зависимостей, а также улучшениям, которые делают команды Wrangler более последовательными и понятными. В отличие от предыдущих крупных версий Wrangler, которые были фундаментальные переработки и перестраивает архитектуру : четвёртая версия Wrangler включает гораздо меньше изменений. Если вы уже используете Wrangler, ваш рабочий процесс почти наверняка не изменится.

Большинству пользователей обновление не потребует никаких действий, но в следующих разделах описаны более существенные изменения и шаги по миграции там, где это необходимо.

Перейдите на Wrangler v4

Чтобы обновиться до последней версии Wrangler v4 в проекте Worker, выполните:

npm i -D wrangler@4

После обновления вы можете проверить установку:

npx wrangler --version

Сводка изменений

Подробные изменения

Обновлённая политика поддержки Node.js

Теперь Wrangler поддерживает только версии Node.js, соответствующие официальный жизненный цикл Node.js:

Тесты Wrangler больше не запускаются на v16, поэтому пользователи, всё ещё использующие эту версию, могут столкнуться с неподдерживаемым поведением. Чтобы продолжить получать поддержку и совместимость с Wrangler, обновите Node.js v16 до поддерживаемой версии.

Затрагивает ли это меня?

Выполните следующую команду, чтобы проверить версию Node.js:

node --version

Вам нужно принять меры, если ваша версия начинается с v16 или v18 (например, v16.20.0 или v18.20.0).

Обновление Node.js, см. Системные требования Wrangler. Cloudflare рекомендует использовать последнюю LTS версию Node.js.

Обновлённая версия esbuild

Wrangler v4 обновляет esbuild с v0.17.19 к v0.24, что принесло улучшения (например, возможность использовать using ключевого слова с RPC) и изменения в поведении сборки:

У пользователей, которые полагаются на динамические импорты с подстановочными знаками, в сборку могут попасть нежелательные файлы. До esbuild v0.19 import инструкции с динамическими путями (например, import('./data/' + kind + '.json')) не включал в сборку все файлы, соответствующие glob-шаблону (*.json). Только файлы, явно указанные или включённые с помощью find_additional_modules были объединены в сборку. Начиная с esbuild v0.19 импорты с подстановочными знаками автоматически включают в сборку все файлы, соответствующие glob шаблону. Это может привести к попаданию в сборку лишних файлов, поэтому вместо динамических импортов с подстановочными знаками рекомендуется использовать явные импорты.

По умолчанию команды работают в локальном режиме

Теперь все команды выполняются в локальный режим по умолчанию. Wrangler имеет много команд для доступа к ресурсам, таким как KV и R2, но раньше эти команды вели себя непоследовательно в том, что касается локального или удалённого окружения выполнения. Например, D1 по умолчанию обращался к локальному хранилищу данных и требовал --remote флаг для запроса через API. KV же раньше по умолчанию запрашивал данные через API, неявно используя флаг --remote флаг) и требовал --local флаг для запроса локального хранилища данных. Чтобы поведение было единообразным во всех командах Wrangler, теперь каждая команда использует --local флаг по умолчанию и требует явного --remote флаг для запроса через API.

Например:

Те, кто использует wrangler kv key и/или wrangler r2 object команды для чтения или записи в своё хранилище данных, потребуется добавить --remote флаг, чтобы воспроизвести прежнее поведение.

Затрагивает ли это меня?

Проверьте, используете ли вы какие-либо из этих команд в скриптах, CI/CD-пайплайнах или ручных процессах:

Команды KV:

Команды R2:

Вам нужно принять меры, если:

Проверьте кодовую базу и конфигурации CI/CD:

grep -rE "wrangler (kv|r2)" --include="*.sh" --include="*.yml" --include="*.yaml" --include="Makefile" --include="package.json" .

Что делать:

Добавить --remote к командам, которые должны взаимодействовать с вашей учётной записью Cloudflare:

# Before (Wrangler v3 - queried remote by default)
wrangler kv key get --binding MY_KV "my-key"

# After (Wrangler v4 - must specify --remote)
wrangler kv key get --binding MY_KV "my-key" --remote

Устаревшие команды и конфигурации удалены

Все ранее устаревшие функции в Wrangler v2 и в Wrangler v3 теперь удалены. Кроме того, также удалены следующие функции, которые были признаны устаревшими в релизе Wrangler v3:

Затрагивает ли это меня?

Проверьте конфигурационный файл Wrangler (wrangler.toml, wrangler.json, или wrangler.jsonc) для устаревших настроек:

# For TOML files
grep -E "(legacy_assets|node_compat|usage_model)\s*=" wrangler.toml

# For JSON files
grep -E "\"(legacy_assets|node_compat|usage_model)\"" wrangler.json wrangler.jsonc

Проверьте свои команды и скрипты для устаревших флагов:

grep -rE "wrangler.*(--legacy-assets|--node-compat)" --include="*.sh" --include="*.yml" --include="*.yaml" --include="Makefile" --include="package.json" .

Проверка использования устаревших API в вашем коде:

grep -rE "getBindingsProxy" --include="*.js" --include="*.ts" --include="*.mjs" .

Вам нужно принять меры, если вы обнаружите что-либо из перечисленного:

Устарело Замена
legacy_assets конфигурацию или --legacy-assets флаг Переход на Workers Static Assets
node_compat конфигурацию или --node-compat флаг Используйте nodejs_compat флаг совместимости
usage_model конфигурация Удалите этот параметр (он больше не действует)
wrangler version команда Используйте wrangler --version
getBindingsProxy() импорт Используйте getPlatformProxy() (те же аргументы)
wrangler publish команда Используйте wrangler deploy
wrangler generate команда Используйте npm create cloudflare@latest
wrangler pages publish команда Используйте wrangler pages deploy