# Як задеплоїти Tea OSS? (Частина 1)

By [Oleg](https://paragraph.com/@ochob) · 2024-03-01

---

Для того, щоб виконати це завдання потрібно задеплоїти свій проект в Apt, Homebrew, npm, Pypi, RubyGems або pkgx (**НЕ ПРОСТО СТВОРИТИ РЕПОЗИТОРІЙ в Github**).Найпростіше зробити це через \*\*npm.\*\*Для того, щоб наш проект появився в списку в Теа, потрібно виконати наступні вимоги:

*   зробити деплой в один з вище перечислених пакетних менеджерів і має пройти більше 24 годин з моменту публікування
    
*   проект має мати хоча б 1 dependencies та 1 dependents (це означає, що нам потрібно зробити деплой 2-х проектів або зробити 1 проект та імпортувати їх на інших гітхаб аккаунтах)
    
*   валідна адреса Git репозиторія
    

є 2 способи як це зробити:

*   локально - потрібно встановити [Node.js](https://nodejs.org/en), [Git](https://gitforwindows.org/) та середовище розробки [VS Code](https://code.visualstudio.com/) (можна зробити через інше середовище або звичайний текстовий редактор, але так зручніше). Даний спосіб підійде для основного аккаунта, оскільки ми це все робимо через наш комп’ютер без проксі.
    
*   [Github Codespace](https://github.com/codespaces) - середовище розробки в браузері, де можна робити все те саме, що і локально, але не потрібно нічого завантажувати. А також це означає, що ми можемо це робити на мультах не боючись за проксі.
    

### Локально

Для того, щоб зробити локально, потрібно буде завантажити проект використовуючи команду `git clone <шлях до репозиторія>`. Всі інші дії будуть аналогічні до Github Codespace, тільки буде трошки відрізнятись інтерфейс в залежності від того, який редактор ви використовуєте.Якщо у вас немає встановленого Node.js, git та редактора, то краще робити через Github Codespace, оскільки можуть виникнути деякі нюанси при встановленні.

### **Github Codespace**

1.  Переходимо в [GitHub](https://github.com) → Repositories та створюємо новий репозиторій (або можна використати вже існуючий)
    

![](https://storage.googleapis.com/papyrus_images/26739b3df881eeafc41653e90f4b3b24a634be56977836cdae9542610844dc88.png)

Прописуємо назву, опис, обов’язково Public та додаємо Readme файл (оскільки з порожнім репозиторієм в нас не вийде зробити)

![](https://storage.googleapis.com/papyrus_images/bc65925427b9fe902a0bba9ec18b0ffa88fd045ddc4f3604b20985480e7d39ac.jpg)

![Тут можна знайти посилання на репозиторій для майбутнього пункту](https://storage.googleapis.com/papyrus_images/36f989de0b06d1de5ed03d6e4ebfaf055015cc1729892c3cf0696a959f1c936b.png)

Тут можна знайти посилання на репозиторій для майбутнього пункту

2\. Переходимо в [Github Codespace](https://github.com/codespaces) та створюємо новий codespace

![](https://storage.googleapis.com/papyrus_images/1f4fc22329fcaceb4ee39d1de97b634fc7e255100564f00efd5b802313d1f59c.png)

Обираємо наш репозиторій з 1 пункту

![](https://storage.googleapis.com/papyrus_images/fd3ea16b7151fc5e26509e02f3b89cae10150b82ccea0d301fc4f65d053bfe3d.png)

Після чого в нас відкриється середовище

![](https://storage.googleapis.com/papyrus_images/240d3f57d95b44b889f0216264d23209144033320a9a621df1b7ee9bf305aeda.png)

3.Прописуємо команду `npm init` в терміналі та натискаємо Enter після кожної дії.

![](https://storage.googleapis.com/papyrus_images/67f99294542b94cba64569c246300951cf1ceb8206f536e1cb73ab043c9e4dcc.png)

Після чого потрібно буде ввести наступне:

*   package name - залишаємо без змін (просто натискаємо Enter) або вводимо нову назву
    
*   далі пропускаємо всі команди крім `git repository`, де потрібно ввести посилання на репозиторій з пункту 1
    
*   в кінці потрібно буде ввести `yes`
    

![](https://storage.googleapis.com/papyrus_images/315955823334a00d3ccf65267cd4d2e8261d8ebc26765ec8537e4e9991d4bdc8.png)

4.Створюємо новий файл index.js (ПКМ в експлорері)

![](https://storage.googleapis.com/papyrus_images/49ae7404f93395ec47548241f8d33be536336089237577352a56bb60071ec13c.png)

Відкриваємо створений файл і вставляємо наш JS код. Можна використати ChatGPT для того, щоб він згенерував код

![](https://storage.googleapis.com/papyrus_images/f34b73873f677ddaaf09c1312f6f8a65e24f4f8afdc0087a2b32ebdb3ed922f7.png)

5.Відкриваємо package.json (**ОБОВ’ЯЗКОВО ПЕРЕВІРЯЄМО, ЩОБ 3-ІЙ ПУНКТ МІСТИВ ПОСИЛАННЯ НА ВАШ РЕПОЗИТОРІЙ, БО НЕ СПРАЦЮЄ**)

![ ](https://storage.googleapis.com/papyrus_images/9cb5a46b28005e82539a2375a7bfd6b6d11d87b8c65af67f596adfa6f7d5f5ed.png)

*   name - нам потрібно, щоб ця назва була унікальна, тому можна глянути на [npm](https://www.npmjs.com/) чи ця назва зайнята або просто додати щось унікальне, що точно ніхто не буде мати
    
*   version - версія нам потрібна якщо ви будете імортувати даний проект в інший (коли створюєте 2-ий проект)
    
*   repository - якщо є префікс `git+`, то краще видалити його і залишити як на скріні (можливо воно теж пройде, але я не впевнений)
    
*   dependencies - додаємо залежності. Можете додати мій проект (він нижче) або будь-який інший.
    

     "dependencies": {
        "minti_fulkerson": "0.1.4"
      },
    

Якщо це ваш 2 проект і ви хочете додати свій перший, щоб він підійшов за критерією, то тоді ми беремо із нашого попереднього проекту дані із поля `name` i `version` ( робимо структуру “name“: “version“). Наприклад, ось так будуть виглядати мої залежності з попереднього скриншоту

     "dependencies": {
        "tea-demonstration": "1.0.0",
        "minti_fulkerson": "0.1.4"
      },
    

**Обов’язково перевіряємо, щоб після останньої залежності не було коми.**

Також можна підправити package.json, щоб все виглядало гарніше (наприклад scripts), але для наших цілей цього достатньо.

6.Тепер ми відчули себе сильними програмістами і хочемо, щоб наш код побачили й інші люди. Тому публікуємо наш код в github. В текстовому полі коротко описуємо те, що ми зробили.

![](https://storage.googleapis.com/papyrus_images/dbd58fbce21062af3bb3f8abb6fb85c8dc86d556cecac6843cb9a5e707f634d7.png)

Якщо буде таке повідомлення, то натискаємо Yes.

![](https://storage.googleapis.com/papyrus_images/9f4757837424b4050a09e1819894b5700225e6987f8dc4f0d072c8a4552fa74e.png)

Тепер там потрібно натиснути Sync Changes або ж зробити “push“, якщо робите через інший інтерфейс.

![](https://storage.googleapis.com/papyrus_images/ed3684f6453cdd84eb020f990037de522af011fd2e3f611f2141b28e8c55ce82.png)

Після чого бачимо, що наші зміни є в репозиторії

![](https://storage.googleapis.com/papyrus_images/913456fa352e12f8e1ddfeb919d1259331ea676440d63103c88498cb3670743e.png)

7.Повертаємось назад до коду і в терміналі пишемо наступне

`npm login`

після чого копіємо посилання і вставляємо його в новій вкладці, після чого авторизовуємось в npm або ж створюємо новий аккаунт, якщо ще немає.

Якщо все добре, то буде в кінці повідомлення “Logged in…“

![](https://storage.googleapis.com/papyrus_images/e75d810645587955decf484717d48882cd69f3b7862287a6278258324adec619.png)

Далі пишемо `npm publish`

Має бути такий результат

![](https://storage.googleapis.com/papyrus_images/882f26cfbcd34c7116a065a9b731bdbdefcd758382d6c492b7c751efd21ce98a.png)

![](https://storage.googleapis.com/papyrus_images/cb73e2036dacb9d978fe5287a15cc7bc72622157f300f073aca81f6657a9b721.png)

Далі заходимо в packages і маємо побачити наш проект

![](https://storage.googleapis.com/papyrus_images/ad8e0a4f0f50db7b36e43ae4a2d27d4430d9c7936aa28845f06b9a6cbc47e076.png)

Спочатку буде 0 dependents (хоча в даному прикладі воно підтягнуло чомусь саме себе).

Для того, щоб все було правильно потрібно знову повторити ці всі пункти, щоб створити новий репозиторій (або ж ви можете імпортувати даний проект на іншому гітхаб аккаунті).Головне, щоб даний проект був у залежностях іншого проекту, а не самого себе.

А додається проект в залежності в наступному місці:

     "dependencies": {
        "tea-demonstration": "1.0.0",
        "minti_fulkerson": "0.1.4"
      },

---

*Originally published on [Oleg](https://paragraph.com/@ochob/tea-oss-1)*
