Turbopack

Turbopack (бета) — это инкрементальный сборщик, оптимизированный для JavaScript и TypeScript, написанный на Rust и встроенный в Next.js.

Использование

Turbopack можно использовать в Next.js как в директории pages, так и в app для ускорения локальной разработки. Чтобы включить Turbopack, используйте флаг --turbo при запуске сервера разработки Next.js.

package.json
{
  "scripts": {
    "dev": "next dev --turbo",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  }
}

Поддерживаемые возможности

Turbopack в Next.js не требует настройки для большинства пользователей и может быть расширен для более сложных сценариев. Чтобы узнать больше о текущих поддерживаемых возможностях Turbopack, ознакомьтесь с Справочником API.

Неподдерживаемые возможности

Turbopack в настоящее время поддерживает только next dev и не поддерживает next build. Мы работаем над поддержкой сборки по мере приближения к стабильной версии.

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

  • Конфигурация webpack() в next.config.js
  • Babel (.babelrc)
    • Turbopack использует компилятор SWC для всех трансформаций и оптимизаций. Это означает, что Babel не включён по умолчанию.
    • Если у вас есть файл .babelrc, он может больше не потребоваться, так как Next.js включает общие плагины Babel в виде трансформаций SWC, которые можно включить. Подробнее об этом можно прочитать в документации компилятора.
    • Если вам всё ещё нужно использовать Babel после проверки, что ваш конкретный случай не покрыт, вы можете воспользоваться поддержкой пользовательских загрузчиков Webpack в Turbopack для включения babel-loader.
  • Автоматическое создание корневого макета в App Router.
    • Это поведение в настоящее время не поддерживается, так как изменяет входные файлы. Вместо этого будет показана ошибка с предложением вручную добавить корневой макет в нужное место.
  • @next/font (устаревшая поддержка шрифтов).
    • @next/font устарел в пользу next/font. next/font полностью поддерживается в Turbopack.
  • new Worker('file', import.meta.url).
    • Мы планируем реализовать это в будущем.
  • Трансформации Relay
    • Мы планируем реализовать это в будущем.
  • experimental.nextScriptWorkers
    • Мы планируем реализовать это в будущем.
  • AMP.
    • В настоящее время мы не планируем поддерживать AMP в Next.js с Turbopack.
  • Yarn PnP
    • В настоящее время мы не планируем поддерживать Yarn PnP в Next.js с Turbopack.
  • experimental.urlImports
    • В настоящее время мы не планируем поддерживать experimental.urlImports в Next.js с Turbopack.

Генерация файлов трассировки

Файлы трассировки позволяют команде Next.js исследовать и улучшать показатели производительности и использования памяти. Чтобы сгенерировать файл трассировки, добавьте NEXT_TURBOPACK_TRACING=1 к команде next dev --turbo, это создаст файл .next/trace.log.

При сообщении о проблемах, связанных с производительностью Turbopack и использованием памяти, пожалуйста, приложите файл трассировки к вашему issue на GitHub.