Развертывание веб-сайтов Next.js на Статические веб-приложения Azure
Next.js поддержку Статические веб-приложения Azure можно классифицировать как две модели развертывания:
Гибридная среда: гибридные Next.js сайты, которые включают поддержку всех Next.js функций, таких как маршрутизатор приложений, маршрутизатор pages и компоненты сервера React
Статические: статические Next.js сайты, использующие параметр "Статический экспорт HTML" Next.js.
Гибридные приложения Next.js (предварительная версия)
Статические веб-приложения поддерживает развертывание гибридных веб-сайтов Next.js. Это обеспечивает поддержку всех Next.js функций, таких как маршрутизатор приложений и компоненты сервера React.
Гибридные Next.js приложения размещаются с помощью Статические веб-приложения глобально распределенного узла статического содержимого и управляемых внутренних функций. Next.js серверные функции размещаются в выделенном экземпляре Служба приложений для обеспечения полной совместимости функций.
С помощью гибридных Next.js приложений страниц и компонентов можно динамически отрисовыть, статически отрисовывая или добавочная отрисовка. Next.js автоматически определяет лучшую модель отрисовки и кэширования на основе получения данных для оптимальной производительности.
Основные функции, доступные в предварительной версии:
- Маршрутизатор приложений и маршрутизатор страниц
- Компоненты сервера React
- Гибридная отрисовка
- Обработчики маршрутов
- Оптимизация изображений
- Интернационализация
- ПО промежуточного слоя
- Аутентификация
Следуйте инструкциям по развертыванию гибридных Next.js приложений , чтобы узнать, как развернуть гибридное приложение Next.js в Azure.
Неподдерживаемые функции в предварительной версии
Следующие функции Статические веб-приложения не поддерживаются для Next.js с гибридной отрисовкой:
- Связанные API с помощью Функции Azure, службы приложение Azure, приложений контейнеров Azure или Azure Управление API.
- Локальная эмуляция и развертывание SWA CLI.
- Частичная поддержка
staticwebapp.config.json
файла.- Резервный вариант навигации не поддерживается.
- Перезаписи маршрутов в приложении Next.js должны быть настроены в
next.config.js
пределах . - Конфигурация в
staticwebapp.config.json
файле имеет приоритет над конфигурацией внутриnext.config.js
. - Настройка сайта Next.js должна обрабатываться с помощью
next.config.js
полной совместимости функций.
skip_app_build
иskip_api_build
не может использоваться в образеAzure/static-web-apps-deploy@v1
развертывания.- Добавочное статическое восстановление (ISR) не поддерживает кэширование изображений.
Примечание.
Максимальный размер приложения для гибридного приложения Next.js составляет 250 МБ. Используйте автономную функцию, Next.js для оптимизированных размеров приложений. Если это недостаточно, рассмотрите возможность использования статического HTML-файла, экспортированного Next.js, если размер приложения превышает 250 МБ.
Статический экспорт HTML
Вы можете развернуть статический сайт Next.js с помощью функции статического экспорта HTML Next.js. Эта конфигурация создает статические HTML-файлы во время сборки, которые кэшируются и используются повторно для всех запросов. См. поддерживаемые функции Next.js статических экспортов.
Статические Next.js сайты размещаются в глобально распределенной сети Статические веб-приложения Azure для оптимальной производительности. Кроме того, можно добавить связанные серверные части для API.
Чтобы включить статический экспорт приложения Next.js, добавьте output: 'export'
в следующую конфигурацию next.config.js
.
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'export',
// Optional: Change the output directory `out` -> `dist`
// distDir: 'dist',
}
module.exports = nextConfig
Необходимо также указать в output_location
конфигурации GitHub Actions/Azure DevOps. По умолчанию это значение равно out
Next.js по умолчанию. Если в конфигурации Next.js указано пользовательское расположение вывода, значение, указанное для сборки, должно соответствовать значению, настроенному в экспорте Next.js.
Если вы используете пользовательские скрипты сборки, установите значение IS_STATIC_EXPORT
true
в задаче Статические веб-приложения файла GitHub Actions/Azure DevOps YAML.
В следующем примере показано задание GitHub Actions, которое включено для статических экспортов.
- name: Build And Deploy
id: swa
uses: azure/static-web-apps-deploy@latest
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for GitHub integrations (i.e. PR comments)
action: "upload"
app_location: "/" # App source code path
api_location: "" # Api source code path - optional
output_location: "out" # Built app content directory - optional
env: # Add environment variables here
IS_STATIC_EXPORT: true
Следуйте инструкциям по развертыванию статических Next.js веб-сайтов , чтобы узнать, как развернуть статическое экспортируемое приложение Next.js в Azure.