---
type: JS Module
title: ensure-gitignore-entries.mjs
resource: npm/scripts/utils/ensure-gitignore-entries.mjs
docgen:
  crc: 35e65c1b
---

Цей модуль відповідає за оновлення файлу `.gitignore` у корені проєкту. Він забезпечує idempotent додавання нових правил ігнорування, перевіряючи їхню наявність перед доповненням. Це необхідно для підтримки консистентності правил ігнорування в проєкті та інтеграції з інструментами тестування, такими як Stryker.

## Поведінка

1.  Отримує вхідні дані: каталог проєкту, список шаблонів для `.gitignore`, такий же заголовок для коментаря.
2.  Перевіряє наявність `.gitignore` у вказаному каталозі.
3.  Якщо `.gitignore` відсутній, створює новий файл з порожнім вмістом.
4.  Зчитує вміст `.gitignore` (якщо він існує).
5.  Розбиває вміст `.gitignore` на окремі рядки, видаляє пробіли на початку та в кінці кожного рядка.
6.  Перетворює отримані рядки у набір (Set) для швидкої перевірки на наявність.
7.  Визначає список шаблонів, яких немає у `.gitignore`.
8.  Якщо список шаблонів, яких немає, порожній, повертає порожній масив доданих шаблонів.
9.  Формує новий рядок для додавання у `.gitignore`. Рядок починається з заголовка, потім додає шаблони з порожнього списку, і завершується символом нового рядка.
10. Додає сформований рядок до вмісту `.gitignore`.
11. Записує змінений вміст `.gitignore` назад у файл.
12. Повертає список шаблонів, які були додані до `.gitignore`.

## Гарантії поведінки

- Якщо файл `.gitignore` існує, то записи додаються лише якщо вони відсутні.
- Якщо файл `.gitignore` не існує, то створюється новий файл `.gitignore` з доданими записами та header-коментарем.
- Записи додаються лише після видалення будь-яких пробілів з початку та кінця кожного запису.
- Якщо запис вже присутній у файлі `.gitignore`, то він не буде доданий повторно.
- Кеш не використовується.
