Развертывание веб-сайтов Next.js на Статические веб-приложения Azure
Next.js поддержку Статические веб-приложения Azure можно классифицировать как две модели развертывания:
Гибридная среда: гибридные Next.js сайты, которые включают поддержку всех Next.js функций, таких как маршрутизатор приложений, маршрутизатор страниц и компоненты сервера 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 с гибридной отрисовкой:
- Выберите службы Azure: связанные API с помощью Функции Azure, службы приложение Azure, приложений контейнеров Azure или Azure Управление API.
- Функции SWA CLI: локальная эмуляция и развертывание SWA CLI.
-
Поддержка частичных функций: следующие свойства в
staticwebapp.config.json
файле не поддерживаются:- Резервный вариант навигации не поддерживается.
- Перезаписи маршрутов в приложении Next.js должны быть настроены в
next.config.js
пределах . - Конфигурация в
staticwebapp.config.json
файле имеет приоритет над конфигурацией внутриnext.config.js
. - Настройка сайта Next.js должна обрабатываться с помощью
next.config.js
полной совместимости функций.
-
Пропуск сборки: для приложений Next.js, если
skip_api_build=true
Статические веб-приложения не удаляет зависимости разработки или добавляет острый пакет по умолчанию. Если вы хотите эти оптимизации, добавьте их в пользовательские шаги сборки перед передачейskip_app_build=true
. - Добавочное статическое восстановление (ISR): кэширование изображений не поддерживается.
Примечание.
Максимальный размер приложения для гибридного приложения Next.js составляет 250 МБ. Используйте автономную функцию, Next.js для оптимизированных размеров приложений. Если это недостаточно, рассмотрите возможность использования статического HTML-файла, экспортированного Next.js , если размер приложения превышает 250 МБ.
Отрисовка на стороне сервера
В следующих шагах показано, как связать настраиваемую серверную часть со стандартным планом и более статическими веб-приложениями.
Примечание.
Связанные серверные части доступны только для сайтов с помощью стандартного плана или более поздней версии.
Перейдите в статическое веб-приложение в портал Azure.
Выберите параметры , а затем API из бокового меню.
Выберите " Настроить связанную серверную часть".
Создайте новый план Служба приложений или выберите существующий план Служба приложений.
Выбранный план Служба приложений должен использовать по крайней мере номер S1 S1.
Щелкните Связать.
Статический экспорт 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.