Skip to content

ViktorSvertoka/goit-react-hw-01-components

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

21 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ΠšΡ€ΠΈΡ‚Π΅Ρ€Ρ–Ρ— приймання

  • Π‘Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Ρ–ΠΉ goit-react-hw-01-components.
  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ всіх завдань Ρ€Π΅Π½Π΄Π΅Ρ€ΡΡ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½Ρ–ΠΉ сторінці, всСрСдині ΡΠΏΡ–Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° – ΠΊΠΎΡ€Π΅Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° <App>.
  • ΠŸΡ€ΠΈ Π·Π΄Π°Ρ‡Ρ– Π΄ΠΎΠΌΠ°ΡˆΠ½ΡŒΠΎΡ— Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Ρ” посилання Π½Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Ρ–ΠΉ Π· Π²ΠΈΡ…Ρ–Π΄Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ.
  • Π’ ΡˆΠ°ΠΏΡ†Ρ– рСпозиторія Ρ” посилання Π½Π° ΠΆΠΈΠ²Ρƒ сторінку Π½Π° GitHub pages.
  • ΠŸΡ–Π΄ час відвідування Ρ€ΠΎΠ±ΠΎΡ‡ΠΎΡ— сторінки (GitHub pages) завдання, Π² консолі відсутні ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ Ρ‚Π° попСрСдТСння.
  • Для ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Ρ” ΠΎΠΊΡ€Π΅ΠΌΠ° ΠΏΠ°ΠΏΠΊΠ° Π· Ρ„Π°ΠΉΠ»ΠΎΠΌ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Ρ– Ρ„Π°ΠΉΠ»ΠΎΠΌ стилів.
  • Для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ–Π² описані propTypes.
  • ВсС, Ρ‰ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΡ‡Ρ–ΠΊΡƒΡ” Ρƒ вигляді пропсів, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ”Ρ‚ΡŒΡΡ ΠΉΠΎΠΌΡƒ ΠΏΡ–Π΄ час Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ.
  • Π†ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ–Π² Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»Ρ– Ρ‚Π° описові.
  • JS-ΠΊΠΎΠ΄ чистий Ρ– Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»ΠΈΠΉ, Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ Prettier.
  • Бтилізація Π²ΠΈΠΊΠΎΠ½Π°Π½Π° CSS-модулями Π°Π±ΠΎ Styled Components, Ρ‚ΠΎΠΌΡƒ класи Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΡƒΡŽΡ‡ΠΎΠΌΡƒ DOM Π²Ρ–Π΄Ρ€Ρ–Π·Π½ΡΡ‚ΠΈΠΌΡƒΡ‚ΡŒΡΡ Π²Ρ–Π΄ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ–Π².
  • Π”ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ Π±Π°Π·ΠΎΠ²ΠΎΡ— стилізації застосунку, насампСрСд Π²Ρ–Π½ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ, Π° Π²ΠΆΠ΅ ΠΏΠΎΡ‚Ρ–ΠΌ Π±ΡƒΡ‚ΠΈ Π³Π°Ρ€Π½ΠΈΠΌ. ΠŸΡ€ΠΈΠ΄Ρ–Π»ΡΠΉ 20% часу Π½Π° CSS Ρ– 80% Π½Π° JS.

ΠŸΡ€ΠΎΡ„Ρ–Π»ΡŒ ΡΠΎΡ†Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΌΠ΅Ρ€Π΅ΠΆΡ–

НСобхідно створити ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ <Profile>, Π·Π° допомогою якого ΠΌΠΈ ΠΌΠΎΠ³Π»ΠΈ Π± Π²Ρ–Π΄ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΠΈ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ ΠΏΡ€ΠΎ користувача ΡΠΎΡ†Ρ–Π°Π»ΡŒΠ½ΠΎΡ— ΠΌΠ΅Ρ€Π΅ΠΆΡ–. Π”Π°Π½Ρ– ΠΏΡ€ΠΎ користувача Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρƒ Ρ„Π°ΠΉΠ»Ρ– user.json.

ΠŸΡ€Π΅Π²'ю ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Profile

Опис ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° <Profile>

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ‚ΠΈ ΠΊΡ–Π»ΡŒΠΊΠ° пропсів Π· Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ”ΡŽ ΠΏΡ€ΠΎ користувача:

  • username β€” Ρ–ΠΌ'я користувача
  • tag β€” Ρ‚Π΅Π³ Π² ΡΠΎΡ†Ρ–Π°Π»ΡŒΠ½Ρ–ΠΉ ΠΌΠ΅Ρ€Π΅ΠΆΡ– Π±Π΅Π· @
  • location β€” місто Ρ– ΠΊΡ€Π°Ρ—Π½Π°
  • avatar β€” посилання Π½Π° зобраТСння
  • stats β€” ΠΎΠ±'Ρ”ΠΊΡ‚ Π· Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ”ΡŽ ΠΏΡ€ΠΎ активності

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΡΡ‚Π²ΠΎΡ€ΡŽΠ²Π°Ρ‚ΠΈ DOM Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ наступної структури.

<div class="profile">
  <div class="description">
    <img
      src="https://cdn-icons-png.flaticon.com/512/1077/1077012.png"
      alt="User avatar"
      class="avatar"
    />
    <p class="name">Petra Marica</p>
    <p class="tag">@pmarica</p>
    <p class="location">Salvador, Brasil</p>
  </div>

  <ul class="stats">
    <li>
      <span class="label">Followers</span>
      <span class="quantity">1000</span>
    </li>
    <li>
      <span class="label">Views</span>
      <span class="quantity">2000</span>
    </li>
    <li>
      <span class="label">Likes</span>
      <span class="quantity">3000</span>
    </li>
  </ul>
</div>

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ використання

import user from 'ΠΏΡƒΡ‚ΡŒ/ΠΊ/user.json;

<Profile
  username={user.username}
  tag={user.tag}
  location={user.location}
  avatar={user.avatar}
  stats={user.stats}
/>

БСкція статистики

Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ <Statistics>, який Π±ΠΈ Π²Ρ–Π΄ΠΎΠ±Ρ€Π°ΠΆΠ°Π² статистику Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΈΡ… пропсів. Наприклад, завантаТСння Ρƒ Ρ…ΠΌΠ°Ρ€Ρƒ Π·Π° Ρ‚ΠΈΠΏΠΎΠΌ Ρ„Π°ΠΉΠ»Ρ–Π², відвідування Π²Π΅Π±-сторінки користувачами Ρ€Ρ–Π·Π½ΠΈΡ… ΠΊΡ€Π°Ρ—Π½, фінансові Π²ΠΈΡ‚Ρ€Π°Ρ‚ΠΈ Ρ‚ΠΎΡ‰ΠΎ. Π”Π°Π½Ρ– ΠΏΡ€ΠΎ статистику Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρƒ Ρ„Π°ΠΉΠ»Ρ– data.json.

ΠŸΡ€Π΅Π²'ю ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Statistics

Опис ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ‚ΠΈ Π΄Π²Π° ΠΏΡ€ΠΎΠΏΠΈ title Ρ– stats, Π² яких Π²ΠΊΠ°Π·ΡƒΡ”Ρ‚ΡŒΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ‚Π° ΠΎΠ±'Ρ”ΠΊΡ‚ статистики.

  • title – Π½Π΅ ΠΎΠ±ΠΎΠ²'язковий, Ρ– якщо Π²Ρ–Π½ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΈΠΉ, Π½Π΅ ΠΏΠΎΠ²ΠΈΠ½Π½Π° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΠΈΡΡŒ Ρ€ΠΎΠ·ΠΌΡ–Ρ‚ΠΊΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° <h2>.
  • stats – масив ΠΎΠ±'Ρ”ΠΊΡ‚Ρ–Π², Ρ‰ΠΎ ΠΌΡ–ΡΡ‚ΡΡ‚ΡŒ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ ΠΏΡ€ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ статистики. МоТС ΠΌΠ°Ρ‚ΠΈ Π΄ΠΎΠ²Ρ–Π»ΡŒΠ½Ρƒ ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π².
  • ΠšΠΎΠ»Ρ–Ρ€ Ρ„ΠΎΠ½Ρƒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° статистики Π² ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ– ΠΌΠΎΠΆΠ½Π° пропустити Π°Π±ΠΎ створити Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ для Π³Π΅Π½Π΅Ρ€Π°Ρ†Ρ–Ρ— Π²ΠΈΠΏΠ°Π΄ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΡΡ‚Π²ΠΎΡ€ΡŽΠ²Π°Ρ‚ΠΈ DOM Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ наступної структури.

<section class="statistics">
  <h2 class="title">Upload stats</h2>

  <ul class="stat-list">
    <li class="item">
      <span class="label">.docx</span>
      <span class="percentage">4%</span>
    </li>
    <li class="item">
      <span class="label">.mp3</span>
      <span class="percentage">14%</span>
    </li>
    <li class="item">
      <span class="label">.pdf</span>
      <span class="percentage">41%</span>
    </li>
    <li class="item">
      <span class="label">.mp4</span>
      <span class="percentage">12%</span>
    </li>
  </ul>
</section>

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ використання

import data from '/ΠΏΡƒΡ‚ΡŒ/ΠΊ/data.json';

<Statistics title="Upload stats" stats={data} />;
<Statistics stats={data} />;

Бписок Π΄Ρ€ΡƒΠ·Ρ–Π²

НСобхідно створити ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ <FriendList>, Π·Π° допомогою якого ΠΌΠΈ ΠΌΠΎΠ³Π»ΠΈ Π± Π²Ρ–Π΄ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΠΈ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ ΠΏΡ€ΠΎ Π΄Ρ€ΡƒΠ·Ρ–Π² користувача. Інформація ΠΏΡ€ΠΎ Π΄Ρ€ΡƒΠ·Ρ–Π² Π·Π±Π΅Ρ€Ρ–Π³Π°Ρ”Ρ‚ΡŒΡΡ Ρƒ Ρ„Π°ΠΉΠ»Ρ– friends.json.

ΠŸΡ€Π΅Π²'ю ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° FriendList

Опис ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° <FriendList>

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ‚ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠΏ friends – масив ΠΎΠ±'Ρ”ΠΊΡ‚Ρ–Π² Π΄Ρ€ΡƒΠ·Ρ–Π².

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΡΡ‚Π²ΠΎΡ€ΡŽΠ²Π°Ρ‚ΠΈ DOM наступної структури.

<ul class="friend-list">
  <!-- Π”ΠΎΠ²Ρ–Π»ΡŒΠ½Π° ΠΊΡ–Π»-ΡΡ‚ΡŒ FriendListItem -->
</ul>

Опис ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° <FriendListItem>

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ‚ΠΈ ΠΊΡ–Π»ΡŒΠΊΠ° ΠΏΡ€ΠΎΠΏΡ–Π²:

  • avatar – посилання Π½Π° Π°Π²Π°Ρ‚Π°Ρ€
  • name – Ρ–ΠΌ'я Π΄Ρ€ΡƒΠ³Π°
  • isOnline – Π±ΡƒΠ»ΡŒ, Ρ‰ΠΎ сигналізує ΠΏΡ€ΠΎ стан Π΄Ρ€ΡƒΠ³Π°: Π² ΠΌΠ΅Ρ€Π΅ΠΆΡ– Π°Π±ΠΎ Π½Ρ–.

Π—Π°Π»Π΅ΠΆΠ½ΠΎ Π²Ρ–Π΄ ΠΏΡ€ΠΎΠΏΠ° isOnline, ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ Π·ΠΌΡ–Π½ΡŽΠ²Π°Ρ‚ΠΈΡΡ ΠΊΠΎΠ»Ρ–Ρ€ Ρ„ΠΎΠ½Ρƒ span.status. Π¦Π΅ ΠΌΠΎΠΆΠ½Π° Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Π·Π° допомогою Ρ€Ρ–Π·Π½ΠΈΡ… CSS-класів Π°Π±ΠΎ Styled Components.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΡΡ‚Π²ΠΎΡ€ΡŽΠ²Π°Ρ‚ΠΈ DOM наступної структури.

<li class="item">
  <span class="status"></span>
  <img class="avatar" src="" alt="User avatar" width="48" />
  <p class="name"></p>
</li>

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ використання

import friends from 'ΠΏΡƒΡ‚ΡŒ/ΠΊ/friends.json';

<FriendList friends={friends} />,

Історія Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†Ρ–ΠΉ

НСобхідно створити ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ історії Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†Ρ–ΠΉ Π² особистому ΠΊΠ°Π±Ρ–Π½Π΅Ρ‚Ρ– Ρ–Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Π±Π°Π½ΠΊΡƒ.

ΠŸΡ€Π΅Π²'ю ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TransactionHistory

Π”Π°Π½Ρ– для списку доступні Ρƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ– JSON Ρƒ Ρ„Π°ΠΉΠ»Ρ– transactions.json. Π¦Π΅ масив ΠΎΠ±'Ρ”ΠΊΡ‚Ρ–Π², ΠΊΠΎΠΆΠ΅Π½ ΠΎΠ±'Ρ”ΠΊΡ‚ описує ΠΎΠ΄Π½Ρƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†Ρ–ΡŽ Π· наступними властивостями:

  • id β€” ΡƒΠ½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΈΠΉ Ρ–Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†Ρ–Ρ—
  • type β€” Ρ‚ΠΈΠΏ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†Ρ–Ρ—
  • amount - сума Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†Ρ–Ρ—
  • currency - Ρ‚ΠΈΠΏ Π²Π°Π»ΡŽΡ‚ΠΈ

Опис ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° <TransactionHistory>

НСобхідно створити ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ <TransactionHistory>, який ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ” ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠΏ items – масив ΠΎΠ±'Ρ”ΠΊΡ‚Ρ–Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†Ρ–ΠΉ Π· transactions.json. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΡΡ‚Π²ΠΎΡ€ΡŽΡ” Ρ€ΠΎΠ·ΠΌΡ–Ρ‚ΠΊΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ–. КоТна транзакція – Ρ†Π΅ рядок Ρ‚Π°Π±Π»ΠΈΡ†Ρ–. Π£ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ– Π½Π°Π²Π΅Π΄Π΅Π½Π° Ρ€ΠΎΠ·ΠΌΡ–Ρ‚ΠΊΠ° Π΄Π²ΠΎΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†Ρ–ΠΉ.

<table class="transaction-history">
  <thead>
    <tr>
      <th>Type</th>
      <th>Amount</th>
      <th>Currency</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Invoice</td>
      <td>125</td>
      <td>USD</td>
    </tr>
    <tr>
      <td>Withdrawal</td>
      <td>85</td>
      <td>USD</td>
    </tr>
  </tbody>
</table>

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ використання

import transactions from 'ΠΏΡƒΡ‚ΡŒ/ΠΊ/transactions.json';

<TransactionHistory items={transactions} />;

React homework template

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» создан ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Create React App. Для знакомства ΠΈ настройки Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ рСпозитория ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ этот Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ GoIT ΠΊΠ°ΠΊ шаблон для создания рСпозитория своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Для этого Π½Π°ΠΆΠΌΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Use this templateΒ» ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈ ΠΎΠΏΡ†ΠΈΡŽ Β«Create a new repositoryΒ», ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

Creating repo from a template step 1

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ шагС откроСтся страница создания Π½ΠΎΠ²ΠΎΠ³ΠΎ рСпозитория. Π—Π°ΠΏΠΎΠ»Π½ΠΈ ΠΏΠΎΠ»Π΅ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΡƒΠ±Π΅Π΄ΠΈΡΡŒ Ρ‡Ρ‚ΠΎ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ, послС Ρ‡Π΅Π³ΠΎ Π½Π°ΠΆΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Create repository from templateΒ».

Creating repo from a template step 2

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ создан, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² настройки созданного рСпозитория Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Settings > Actions > General ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

Settings GitHub Actions permissions step 1

ΠŸΡ€ΠΎΡΠΊΡ€ΠΎΠ»ΠΈΠ² страницу Π΄ΠΎ самого ΠΊΠΎΠ½Ρ†Π°, Π² сСкции Β«Workflow permissionsΒ» Π²Ρ‹Π±Π΅Ρ€ΠΈ ΠΎΠΏΡ†ΠΈΡŽ Β«Read and write permissionsΒ» ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ Π² чСкбоксС. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ процСсса дСплоя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Settings GitHub Actions permissions step 2

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ тСбя Π΅ΡΡ‚ΡŒ Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, со структурой Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΎΠΊ рСпозитория-шаблона. Π”Π°Π»Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΠΉ с Π½ΠΈΠΌ ΠΊΠ°ΠΊ с Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ, ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉ Π΅Π³ΠΎ сСбС Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, пиши ΠΊΠΎΠ΄, Π΄Π΅Π»Π°ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈ отправляй ΠΈΡ… Π½Π° GitHub.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅

  1. УбСдись Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ установлСна LTS-вСрсия Node.js. Π‘ΠΊΠ°Ρ‡Π°ΠΉ ΠΈ установи Π΅Ρ‘ Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.
  2. Установи Π±Π°Π·ΠΎΠ²Ρ‹Π΅ зависимости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ npm install.
  3. Запусти Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ npm start.
  4. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠΎ адрСсу http://localhost:3000. Π­Ρ‚Π° страница Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ послС сохранСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π”Π΅ΠΏΠ»ΠΎΠΉ

ΠŸΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ вСрсия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³, ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒΡΡ Π½Π° GitHub Pages, Π² Π²Π΅Ρ‚ΠΊΡƒ gh-pages, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° обновляСтся Π²Π΅Ρ‚ΠΊΠ° main. НапримСр, послС прямого ΠΏΡƒΡˆΠ° ΠΈΠ»ΠΈ принятого ΠΏΡƒΠ»-рСквСста. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ package.json ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ homepage, Π·Π°ΠΌΠ΅Π½ΠΈΠ² your_username ΠΈ your_repo_name Π½Π° свои, ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ измСнСния Π½Π° GitHub.

"homepage": "https://your_username.github.io/your_repo_name/"

Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΉΡ‚ΠΈ Π² настройки GitHub-рСпозитория (Settings > Pages) ΠΈ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π΄Π°Ρ‡Ρƒ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ вСрсии Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ /root Π²Π΅Ρ‚ΠΊΠΈ gh-pages, Ссли это Π½Π΅Π±Ρ‹Π»ΠΎ сдСлано автоматичСски.

GitHub Pages settings

Бтатус дСплоя

Бтатус дСплоя ΠΊΡ€Π°ΠΉΠ½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° отобраТаСтся ΠΈΠΊΠΎΠ½ΠΊΠΎΠΉ Π²ΠΎΠ·Π»Π΅ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°.

  • Π–Π΅Π»Ρ‚Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ - выполняСтся сборка ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • Π—Π΅Π»Π΅Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ - Π΄Π΅ΠΏΠ»ΠΎΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.
  • ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ - Π²ΠΎ врСмя Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³Π°, сборки ΠΈΠ»ΠΈ дСплоя ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка.

Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ статусС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ² ΠΏΠΎ ΠΈΠΊΠΎΠ½ΠΊΠ΅, ΠΈ Π² Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ ссылкС Details.

Deployment status

Живая страница

Π§Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ°Ρ€Ρƒ ΠΌΠΈΠ½ΡƒΡ‚, ΠΆΠΈΠ²ΡƒΡŽ страницу ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎ адрСсу ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ свойствС homepage. НапримСр, Π²ΠΎΡ‚ ссылка Π½Π° ΠΆΠΈΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ для этого рСпозитория https://goitacademy.github.io/react-homework-template.

Если открываСтся пустая страница, ΡƒΠ±Π΅Π΄ΠΈΡΡŒ Ρ‡Ρ‚ΠΎ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Console Π½Π΅Ρ‚ ошибок связанных с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ путями ΠΊ CSS ΠΈ JS Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (404). Π‘ΠΊΠΎΡ€Π΅Π΅ всСго Ρƒ тСбя Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства homepage Π² Ρ„Π°ΠΉΠ»Π΅ package.json.

ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ

Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ react-router-dom для ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ <BrowserRouter>, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π² ΠΏΡ€ΠΎΠΏΠ΅ basename Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π²ΠΎΠ΅Π³ΠΎ рСпозитория. БлСш Π² Π½Π°Ρ‡Π°Π»Π΅ строки обязатСлСн.

<BrowserRouter basename="/your_repo_name">
  <App />
</BrowserRouter>

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

How it works

  1. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡƒΡˆΠ° Π² Π²Π΅Ρ‚ΠΊΡƒ main GitHub-рСпозитория, запускаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ скрипт (GitHub Action) ΠΈΠ· Ρ„Π°ΠΉΠ»Π° .github/workflows/deploy.yml.
  2. ВсС Ρ„Π°ΠΉΠ»Ρ‹ рСпозитория ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° сСрвСр, Π³Π΄Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ инициализируСтся ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³ ΠΈ сборку ΠΏΠ΅Ρ€Π΅Π΄ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ.
  3. Если всС шаги ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, собранная ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ вСрсия Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° отправляСтся Π² Π²Π΅Ρ‚ΠΊΡƒ gh-pages. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Π² Π»ΠΎΠ³Π΅ выполнСния скрипта Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.