Table of Contents
Что такое деплой? 🧐
Деплой — процесс развертывания новой версии сайта на сервер (или сервера). Этот процесс может быть довольно сложным и сильно зависит от используемых технологий.
Во время деплоя могут выполняются следующие задачи:
- Код проекта скачивается на сервер (обычно через клонирование Git)
- Ставятся все необходимые зависимости (
npm install
) - Выполняется процесс сборки. (
npm run build
) - Замена старых файлов на новые.
Что такое хостинг? 🤔
Хостинг сайтов – это онлайн услуга, которая позволяет публиковать веб-приложение в интернете. Обычно Вы арендуете пространство на сервере, на котором вы можете хранить все файлы и данные, необходимые для правильного функционирования вашего приложения.
Сервер – это физический компьютер, который работает без перерывов, чтобы ваш сайт был доступен в любое время.
Деплой с использованием GitHub Pages и create react app
Шаг 1
Важно
Если вы его пропустите этот шаг, то ваше приложение будет развернуто не правильно.
Добавить homepage в package.json
homepage может выглядеть следующим образом:
Для конкретного репозитория:
"homepage": "https://myusername.github.io/my-app",
для страницы пользователя GitHub:
"homepage": "https://myusername.github.io",
для страницы личного домена:
"homepage": "https://mywebsite.com",
Create React APP использует поле домашней страницы для определения корневого URL-адрес.
Шаг 2
Установка пакета gh-pages
npm install --save gh-pages
Добавим deploy script в package.json
"scripts": {+ "predeploy": "npm run build",+ "deploy": "gh-pages -d build","start": "react-scripts start","build": "react-scripts build",
predeploy script будет запускать запускается автоматически перед запуском deploy.
Скрипты с приставкой pre/post это npm хуки, которые могут запускаться перед началом скрипта или же после его выполнения.
Шаг 3 Deploy
Для того что бы задеплоить ваш сайт запустить в консоли следующую команду
npm run deploy
Шаг 4
Настройка github repository
Убедитесь, что параметр GitHub Pages в настройках вашего проекта GitHub настроен на использование ветки gh-pages:
Читать болле подробною инструкцию по развертыванию приложения на github pages
Примечания по маршрутизации на стороне клиента 🚨
Вам понадобятся две вещи, чтобы ваше одностраничное приложение могло запускаться на страницах GitHub.
- Скопируйте
404.html
файл в ваше приложение.- Обратите внимание: если вы настраиваете сайт Project Pages и не используете custom domain (т.е. адрес вашего сайта -
username.github.io/repo-name
), вам необходимо установитьsegmentCount
на «1» в файле «404.html», чтобы сохранить «/repo-name» в пути после перенаправления.
- Обратите внимание: если вы настраиваете сайт Project Pages и не используете custom domain (т.е. адрес вашего сайта -
- Скопируйте redirect script из
index.html
и добавте в вашindex.html
файл - Обратите внимание, что скрипт перенаправления должен быть перед скриптом одностраничного приложения в вашем файле index.html.
Почитать 📚
Деплой с Netlify 😎
Netlify это сервис для публикации и размещения статических сайтов, с довольно большими возможностями. Здесь есть:
- dns-хостинг
- настройки редиректов и заголовков для определенных файлов,
- автоматическая минификация js/css файлов
npm install netlify-cli -gnetlify deploy
Выберать build директорию в качестве пути для развертывания.
Настройка CI:
С этой настройкой Netlify будет создавать и развертывать, когда вы делаете git push или создаете Pull request:
- Начать новый проект netlify
- Выбрать свой репозиторий
- Нажмите "Build your site".
Поддержка маршрутизации на стороне клиента:
Для поддержки pushState обязательно создайте public/_redirects
со следующими правилами перезаписи:
/* /index.html 200
При сборке проекта Create React App поместит содержимое общей папки в выходные данные сборки.