Страницы GitHub позволяют нам размещать статические сайты из репозитория. NextJS можно использовать в качестве статического генератора сайтов. Если мы комбинируем эти две вещи и добавим некоторое действие GitHub, мы получим веб-сайт на основе React, который легко поддерживать, тестировать и хост.
Подготовьте приложение NextJS
Чтобы сгенерировать статический выход, нам нужно добавить Следующий экспорт
Команда, которая создает статическую версию приложения.
"scripts": { "dev": "next dev", "build": "next build", + "export": "next export", "start": "next start" },
Согласно NextJS документация есть несколько предостережений, которые мы должны встретить (например, мы не можем использовать getserversideprops
из -за статического рендеринга без сервера) для успешного экспорта. Если вы используете по умолчанию Next/Image Загрузчик, вы должны добавить по умолчанию загрузчик Анкет
Если наше приложение NextJS готово, мы должны попробовать NPM Run Build && NPM Run Export
командование Вывод Экспорт успешно.
означает, что приложение готово к развертыванию.
Если вы хотите использовать пользовательский домен, просто добавьте файл cname в public
каталог.
GitHub Page
Чтобы разместить веб -сайт на страницах GitHub, мы должны активировать его в настройках репозитория. Мы можем выбрать пользовательский домен (в этом случае вы должны добавить файл cname
, который содержит адрес и изменять DNS). Вы также можете проверить Применение https вариант.
Каждый .dev Домен находится в списке предварительной загрузки HSTS, который делает HTTPS, необходимые для всех соединений. Так что, если вы хотите использовать .dev Домен вы должны проверить Применение https
Действие GitHub
GitHub предоставляет 2000 действий минут/месяц для бесплатных счетов. Этого более чем достаточно, чтобы проверить, как это работает, и использовать его в некоторых побочных проектах.
Давайте перейдем к созданию действия GitHub. Введите свой проект на GitHub, затем перейдите к Действия вкладка и выберите Node.js GitHub Действия (Имя действия зависит от вас).
Я использовал следующий сценарий:
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: GitHub Pages deploy on: push: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout 🛎️ uses: actions/checkout@v2.3.1 - name: Use Node.js 14.x uses: actions/setup-node@v1 with: node-version: "14.x" - name: Installing my packages run: npm ci - name: Build my App run: npm run build && npm run export && touch ./out/.nojekyll - name: Deploy 🚀 uses: JamesIves/github-pages-deploy-action@4.1.0 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages # The branch the action should deploy to. FOLDER: out # The folder the action should deploy.
Я думаю, что это YML
Файл прост для понимания. Некоторые грубые объяснения:
- Действие будет вызвано на каждом толчке к
Главный
ответвляться, - Ubuntu будет использоваться в качестве ОС (вы также можете выбрать Windows или MacOS),
- В скрипте первого шага будет оформлять наш код из репозитория и использовать Nodejs в данной версии,
npm ci
используется для установки пакетов вместоNPM Установка
Потому что это быстрее, чем то, о чем мы заботимся из -за ограничений действий GitHub,Шаг назван
Создайте мое приложение
является главным:NPM Run Build && NPM Run Export
приложение сборки и экспорта,запустить: touch ./out/.nojekyll
потому что_next
Папка по умолчанию не обслуживается GitHub из -за обработки Jekyll,.nojekyll
Файл предотвращает это,
- github-pages-deploy-action используется, чтобы подтолкнуть статический экспортируемый сайт в
GH-Pages
ответвляться.
npm ci
используется в действии, требуется Package-lock.json
Это не создано пряжа
. Есть несколько способов справиться с этим (например, установка пряжи-Frozen-Lockfile ), но я решил просто использовать
npm вместо
пряжа .
Резюме
Теперь мы можем обслуживать статический веб -сайт на бесплатном хостинге с автоматическим развертыванием на push to Главный
Анкет HTTPS предоставляется страницами GitHub. Единственная стоимость — это пользовательский домен (если мы хотим). Другие статические генераторы сайтов, такие как Гэтсби , Jekyll , или Хьюго (Почти на каждом веб -сайте вы можете прочитать, что их структура является самой быстрой) можно использовать с страницами и действиями GitHub почти так же, как и NextJS.
Проверьте Репозиторий С примером приложения приложения NextJS, созданного с описанным GitHub Action это размещено правильно Здесь Анкет
Первоначально опубликовано в https://lukaszwozniak.dev 18 апреля 2021 года.
Оригинал: «https://dev.to/lukaszwozniak/deploy-nextjs-app-to-github-pages-using-github-actions-27f3»