Створення і клонування своєї збірки React на базі Create React App

Створення застосунку React

Створимо і налаштуємо збірку React, яку зможемо потім використовувати як шаблон для всіх наступних наших проєктів. Далі приблизна покрокова інструкція.

  1. Створимо новий репозиторій на сайті GitHub: + -> New repository

  1. Дамо назву нашому репозиторію-шаблону React. Можемо додати опис нашому репозиторію. Робимо репозиторій публічним.

  1. Клонуємо створений проєкт локально на компʼютер і відкриваємо його в VSCode.

  1. Відкриваємо термінал і розгортаємо застосунок React цією командою.

  1. Тепер у нас є розгорнутий проєкт React із такою структурою:

  • Файл конфігурації проєкту package.json

  • Тека node_modules в яку будуть встановлюватися всі додаткові модулі

  • Тека public з якою ми мало працюватимемо, але в якій лежить головний файл index.html в якому вестиметься наш проєкт.

  • .gitignore - файл в якому прописано правила ігнорування файлів і тек при синхронізації з GitHub

  • README.md - файл з описом нашого проєкту. його можна правити. Це той опис, який ми бачимо, коли відкриваємо сторінку репозиторія на GitHub

  • І головна робоча тека src із головним файлом застосунку index.js

  1. Запустимо наш проєкт і переконаємося, що він працює. Виконаємо в терміналі таку команду:

Після цього запуститься сервер і в консолі зʼявиться повідомлення, що ми можемо переглянути проєкт за адресою в браузері http://localhost:3000/:

Також автоматично відкриється і браузер за цією адресою.

  1. Сконфігуруємо базовий URL нашого проєкту (для зручної роботи з посиланнями на файли проєкту). Для цього в корені проєкту створимо файл jsconfig.json із таким кодом:

  1. Якщо є бажання, можна також створити кастомний файл налаштування форматування коду для Prettier (це на випадок, якщо доведеться працювати в команді та потрібні будуть уніфіковані правила оформлення вихідного коду). Створимо в корені проєкту файл .prettierrc.json і в ньому помістимо, наприклад такий код:

  1. Тепер потрібно налаштувати деплой (розміщення на сервері) нашого проєкту на GitHub-pages. Це роблять за допомогою автоматизатора GitHub Actions. Також можна встановити додатково розширення GitHub Actions для VSCode. Це значний шматок інформації. Тут буде використано необхідний мінімум.

Створимо в корені проєкту теку .github, а в ній теку workflows, а в ній файл deploy.yml з таким вмістом:

В цьому файлі прописана автоматизація, як буде відбуватися деплой проєкту після оновлення головної гілки на GitHub.

Збирати проєкт ми будемо із файлів з головної гілки main.

Після цього ми встановимо всі необхідні пакети, проженемо код на лінтері (перевірка коду), і побудуємо проєкт у теку build. Назва гілки буде gh-pages.

  1. Потрібно ще налаштувати лінтер. Це додатковий пакет, який перевіряє код на помилки. Деплой на GitHub pages буде відбуватися тільки у разі відсутності помилок. Якщо якісь помилки все ж таки допущено, то на сторінці репозиторію на сайті GitHub ми побачимо звіт про помилки із їх вказанням і настановами, що потрібно виправити.

Встановимо бібліотеки тестування:

  1. Підправимо наш файл конфігурації проєкту package.json. Додамо такі налаштування:

Тут sasha-khomiak - назва профілю на GitHub, а my-react-template - назва репозиторію.

У файлі package.json в скриптах потрібно дописати додатковий скрипт.

Відтак налаштування матимуть приблизно такий вигляд:

  1. У файлі index.html в теці public потрібно дописати в тезі <head> такий скрипт

А також потрібно в теці public створити файл 404.html із таким вмістом:

  1. Тепер потрібно внести налаштування на самому GitHub. Для цього потрібно дозволити виконання GitHub Actions (як на скрінах) і зберегти зміни.

Settings -> General -> Allow all actions reusable workflows

А внизу сторінки вибрати Read and write permissions і Allow GitHub Actions to create and approve pull requests

  1. Тепер можна в GitHub Desktop закомітити всі зміни та опублікувати гілку.

  1. На сторінці репозиторію видно індикатор статусу виконання деплою.

Жовтий кружечок - операція виконується,

зелена галочка - все успішно задеплоєно,

червоний хрестик - виникла помилка. Натиснувши на символ хрестика можна отримати звіт про помилку.

  1. Тепер потрібно отримати сторінку за якою ми зможемо переглянути наш застосунок. У налаштуваннях Settings -> Pages обираємо гілку gh-pages і натискаємо Save. чекаємо хвилинку-дві та отримаємо посилання на проєкт.

  1. Тепер налаштуємо наш проєкт так, щоб ми могли створити копію цього проєкту прямо на GitHub сторінці. Settings -> General -> Template repository

Створення копії застосунку React

Щоб не повторювати вручну всі ці налаштування проєкту ми можемо його просто продублювати - створити копію і внести певні незначні корективи для подальної роботи. Розглянемо порядок дій.

  1. На сторінці репозиторію натискаємо кнопку Use this template та обираємо Create a new repository.

  1. Даємо імʼя новому репозиторію і зберігаємо натиснувши кнопку Create repository.

  1. Одразу налаштуємо, щоб працювали GitHub Actions.

Settings -> Actions -> General

Вибираємо Read and write permissions і Allow GitHub Actions to create and approve pull requests

  1. Клонуємо репозиторій на локальний компʼютер

  1. У VSCode вносимо правки в файл package.json. Вказуємо нове імʼя застосунку і новий свій профіль GitHub (якщо інший користувач створив із шаблону застосунок).

  1. Встановлюємо всі залежності

  1. Запускаємо локально проект командою

  1. Внесемо якісь зміни у файл App.js, щоб переконатися, що наші правки працюють.

  1. У GitHub Desktop зробимо комміт і опублікуємо його.

  1. Відкриваємо репозиторій на GitHub і чекаємо успішного виконання деплою.

  1. Налаштовуємо gh-pages і чекаємо поки зʼявиться посилання на живу сторінку. Settings -> Pages -> Branch -> gh-pages

На цьому можемо зупинитися. Але немає межі досконалості. Тому кожен може налаштувати під себе свою конфігурацію проекту React.

Покликання:

Легкий старт Create React App

Проект create-react-app на GitHub

Деплой React-застосунку

Deploying a React App* to GitHub Pages

GitHub Actions

Розширення GitHub Actions для VSCode

NPM React Testing Library

Last updated