# Contributing

## ⏳ Подготовка к разработке

1. Склонировать репозиторий и перейти в созданную директорию.
2. Установить зависимости.

```bash
git clone git@https://github.com/VKCOM/vkid-web-sdk.git
cd web-sdk
yarn install
```

## 🐶 Базовые команды

> Используйте `prod` вместо `dev` в команде запуска для сборки итогового бандла

1. `yarn sdk:dev` - сборка проекта с отслеживанием изменений
2. `yarn docs:dev` - сборка документации с отслеживанием изменений
3. `yarn demo:dev` - сборка демо стенда с отслеживанием изменений
4. `yarn tests` - прогон unit тестов

## 🪵 Создание ветки

Ветки делаются от `develop`.

Для названия веток используется специальный шаблон:

```bash
{username}/{task_type}/{description}/{issue_number}
```

Пример:

```bash
git checkout develop
git pull
git checkout -b user/task/new-feature/ISSUE-1
```

## 📝 Создание коммита

Сообщение в коммите должно соответствовать шаблону. 

Для коммитов будет добавлен линтер на хук `commit-msg`, который проверяет, соответствует ли сообщение в коммите шаблону.

Доступные шаблоны:

```bash
{номер задачи}: краткое описание коммита на английском языке

// ISSUE-1: change auth button color
```

## 😸 Подготовка Merge Request

Для того, чтобы подготовить Merge Request, необходимо пройти [Чеклист](.gitlab/merge_request_templates/Default.md)

## 👨‍🍳 Создание нового модуля

Правила структуры для создания нового модуля расположены в [Code Style](./CODE_STYLE.md).

## 🐛 Тесты

В репозитории используются `unit` тесты на jest.
Запуск тестов выполняется командой:

```bash
yarn tests
```

Правила структуры файлов с тестами описаны в  [Code Style](./CODE_STYLE.md).

## 🖊️ Документация

> Автосгенерированная документация находится в папке `./docs/`

Документация собирается с помощью [typedoc](https://typedoc.org/).

Запустить можно командой:

```bash
yarn docs:prod
```

Чтобы следить за изменениями документации локально в реальном времени, нужно выполнить команду:

```bash
yarn docs:dev
```

Чтобы добавить новый модуль в документацию, надо добавить в `entryPoints` путь к `index.ts` из нового модуля в файле [typedoc.json](./typedoc.json)
