Для хостинга статического сайта вполне подойдет Github Pages. Но SPA Github Pages не поддерживает из-за отсутствия поддержки клиентского роутинга (например React Router)
1. Зарегистрируйтесь на netlify.com
На этом шаге вас перенаправит на Github. Там нужно будет указать Вашего пользователя Github и репозитории, которые вы хотите деплоить. Можно выбрать опцию "All repositories"
Дальше Вас должно перенаправить обратно на netlify.com и здесь в списке появятся все репозитории, к которым вы открыли доступ на github.com
Дальше вы увидите окно настроек, где нужно:
- выбрать ветку, с которой брать исходный код
- команду, которую запустить для сборки проекта
- папку, в которую попадают файлы сборки
Нажимаем кнопку "Deploy site" - и это все) Подождите, пока сайт задеплоится (до минуты). Когда увидите зеленую лейбочку "Published", можно переходить по ссылке на сайт
Дальше каждый раз, когда вы будете пушить изменения в "master" (ветка, указанная в на 6-ом шагу), изменения будут подхвачены и обновится сайт
С такой настройкой все будет хорошо, пока вы не перейдете на какой-то роут и перезагрузите страницу. Это произошло потому, что пока хостинг работает не как SPA. Чтобы это исправить, перейдите на шаг 10, если вы используете create-react-app, или на шаг 11, если у вас своя настройка сборки.
Так же нужно настроить отображение изображений, так как с такой сборкой статика не попадает в финальный билд.
Добавьте файл с названием _redirects в папку public. Содержание файла:
/* /index.html 200
Сделайте commit и push в master. netlify.com задеплоит изменения (до минуты) и роутинг будет работать. Теперь точно все 😉
Добавьте файл с названием _redirects в корень проекта. Содержание файла:
/* /index.html 200
Настройте webpack, чтобы он скопировал этот файл в папку сборки.
- Установите
copy-webpack-plugin
npm install copy-webpack-plugin --save-dev
- Добавьте
CopyPluginв массив плагинов вwebpack.config.js
const CopyPlugin = require('copy-webpack-plugin');
module.exports = {
// ...
plugins: [
// ...
new CopyPlugin({
patterns: [
{ from: '_redirects', to: '' },
],
}),
],
};
const CopyPlugin = require('copy-webpack-plugin');
module.exports = {
// ...
plugins: [
// ...
new CopyPlugin({
patterns: [
{ from: '_redirects', to: '' },
{ from: "source/url/to/images/folder", to: "dest/url/to/images/folder" },
],
}),
],
};
Такая настройка для CopyPlugin будет работать, если Ваш webpack.config.js тоже лежит в корне проекта
Сделайте commit и push в master. netlify.com задеплоит изменения (до минуты) и роутинг будет работать. Теперь точно все 😉






