gh-pages -d build
Продолжая свой предыдущий пост Отображение данных о местоположении с помощью Mapbox, я искал варианты бесплатного размещения приложения в Интернете. Первоначально я думал об использовании Amazon Web Services для размещения своего приложения с их уровнем бесплатного пользования. Но 750 часов в месяц использования экземпляра EC2 в конечном итоге закончились бы, если бы у меня было запущено и работало более одного экземпляра. Использовать AWS для размещения моего приложения React было невозможно, так как я искал постоянное бесплатное решение.
Я знаю, что на страницах GitHub разрешен хостинг статического сайта, но я не был уверен, можно ли разместить на нем приложение React. Быстрый поиск в Интернете, похоже, на страницах GitHub можно размещать приложения React.
Вот как я опубликовал свое приложение React на страницах GitHub.
Есть несколько способов разместить приложение React на страницах GitHub. Во-первых, вручную создайте ветку с именем gh-pages
и используйте эту ветку для создания страниц GitHub для репозитория. Второй вариант - использовать пакет npm, gh-pages, который, по сути, сделает всю тяжелую работу.
Вариант 1 - трудный путь
Следуя документации страниц GitHub, я создал новую ветку gh-pages
в моем локальном репозитории.
git checkout -b gh-pages
Обновите package.json
файл и добавьте homepage
ключ, указывающий на: https://<github_username>.github.io.<repository_name>/
homepage: "https://chandankkrr.github.io/this-is-too-much-data/"
Затем выполните команды npm install и build , чтобы установить зависимости и построить проект.
npm install npm run build
После выполнения команды сборки в корневом каталоге проекта создается папка сборки. На этом этапе я подтолкнул свою ветку к источнику, затем перешел к настройке репозитория в GitHub и использовал ветку gh-pages
в качестве источника для страниц GitHub.
Я был взволнован, увидев, все ли настроено правильно и приложение работает на страницах GitHub, но после перехода на https://chandankkrr.github.io/this-is-too-much-data все, что я нашел, было содержимое файла Readme.md, отображаемое на странице с темой по умолчанию.
Я думаю, причина того, что содержимое файла readme было отображено вместо запущенного приложения, заключается в том, что GitHub не может определить, что ему нужно для обслуживания файла из папки сборки. По сути, он ищет файлы для обслуживания из корневого каталога.
В качестве обходного пути я удалил все файлы, кроме одного, относящегося к git и папке сборки, переместил содержимое папки сборки в корневой каталог и, наконец, удалил папку сборки.
mv build/* . rm -rf ./build
Как только файлы из папки сборки оказались в корневом каталоге, я зафиксировал изменения и отправил их в удаленный источник.
git add . git commit -m "Build files for GitHub pages" git push
Наконец, после того, как изменения были перенесены в GitHub, я снова проверил настройки репозитория, чтобы убедиться, что ветка gh-pages
по-прежнему является источником страниц GitHub.
Перейдя на https://chandankkrr.github.io/this-is-too-much-data, я вижу, что приложение запущено и работает.
Вариант 2. Простой способ
Второй вариант публикации приложения React на страницах GitHub - использование пакета npm gh-pages.
Пакет npm может публиковать файлы в gh-pages
ветке на GitHub. Я установил пакет и выполнил сборку, выполнив следующую команду npm.
npm install gh-pages
После установки я обновил свой package.json
файл, включив команду deploy
в сценарии.
"scripts": { "start": "react-scripts start", "build": "react-scripts build", "predeploy": "npm run build", "deploy": "gh-pages -d build" }
Пакет требует, чтобы свойство домашней страницы присутствовало в файле package.json. Это используется gh-страницами для размещения файлов на определенном URL-адресе сервера.
homepage: "https://chandankkrr.github.io/this-is-too-much-data/"
Файл package.json
выглядит следующим образом
Наконец, я могу запустить команду развертывания, чтобы опубликовать приложение на страницах GitHub.
npm run deploy
Я снова проверил настройки репозитория, чтобы убедиться, что ветка gh-pages
по-прежнему является источником страниц GitHub. Приложение React было запущено и работало.
Я столкнулся с проблемой, из-за которой запуск команды развертывания не работал. По какой-то причине я получал несанкционированное исключение. После устранения проблемы я получал сообщение об ошибке "15_ уже существует".
После проверки на странице репозитория npm в разделе советы упоминается следующее.
При получении ошибки branch already exists
{ ProcessError: fatal: A branch named 'gh-pages' already exists.
at ChildProcess.<anonymous> (~/node_modules/gh- pages/lib/git.js:42:16)
at ChildProcess.emit (events.js:180:13)
at maybeClose (internal/child_process.js:936:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
code: 128,
message: 'fatal: A branch named \'gh-pages\' already exists.\n',
name: 'ProcessError' }
фатальный: ветка с именем gh-pages уже существует.
При обработке
gh-pages,
модуль генерирует файл in.cache/
, и если он застрял по какой-либо причине, например из-за неправильного пароля, он не будет автоматически очищать
Запустите
~node_modules/gh-pages/bin/gh-pages-clean
или удалите~node_modules/gh-pages/.cache
Заключение
Довольно легко и быстро разместить ваше приложение на страницах GitHub, и в будущем я буду использовать его для других приложений.
Ваши приложения работают на страницах GitHub? Пожалуйста, поделитесь 🙏