---
type: JS Module
title: rename-yaml-extensions.mjs
resource: npm/scripts/rename-yaml-extensions.mjs
docgen:
  crc: 6ffbfdff
---

Цей файл перейменовує розширення файлів YAML у репозиторіях, відповідно до узгоджених правил. Він автоматизує процес зміни розширення файлів `.yml` на `.yaml` для файлів, що відповідають певним шаблонам шляхів, зокрема для маніфестів Kubernetes та workflow-файлів GitHub. Це забезпечує узгодженість форматування YAML у репозиторії.

## Поведінка

- `posixRelFromRoot`: Обчислює відносний шлях від кореня, замінюючи `\` на `/`. Повертає `null`, якщо шлях поза коренем.
- `pathMatchesK8sYml`: Перевіряє, чи шлях містить сегмент `k8s` та має розширення `.yml`.
- `pathMatchesGithubYaml`: Перевіряє, чи шлях містить сегмент `.github` та має розширення `.yaml`.
- `replaceExtension`: Замінює останнє розширення файлу на вказане, додаючи крапку.
- `collectRenameOps`: Збирає операції перейменування, обходячи репозиторій, ігноруючи `node_modules`, `.git`, `dist`, `coverage`, `.turbo`, `.next`.
- `renameYamlExtensions`: Виконує перейменування, симулюючи або реалізуючи перейменування, на основі правил k8s/github, обходячи вказані каталоги.
- `parseRenameYamlArgs`: Розбирає аргументи командного рядка `--dry-run` та `--root`.

## Публічний API

- posixRelFromRoot — Повертає відносний шлях від кореня файлової системи, або `null`, якщо шлях знаходиться за межами кореня.
- pathMatchesK8sYml — Перевіряє, чи відповідає шлях формату YAML-маніфестів Kubernetes.
- pathMatchesGithubYaml — Перевіряє, чи відповідає шлях формату YAML-файлів `.github`.
- replaceExtension — Замінює розширення файлу на вказане.
- renameYamlExtensions — Перейменовує YAML-файли відповідно до правил Kubernetes та `.github`.
- parseRenameYamlArgs — Розбирає аргументи командного рядка для команди перейменування.

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

- Файл `bin/rename-yaml-extensions.mjs` перейменовує розширення YAML файлів.
- Перейменування відбувається за двома сценаріями:
  - Файли з сегментом шляху `k8s` та суфіксом `.yml` перейменовуються на `.yaml`.
  - Файли з сегментом `.github` та суфіксом `.yaml` перейменовуються на `.yml`.
- Обхід шляхів: `node_modules`, `.git`, `dist`, `coverage`, `.turbo`, `.next` не обробляються.
- Аргументи CLI: `--dry-run`, `--root`
- Повертає `false` у разі невдачі.
- Не кидає винятків.
- Не використовує кешування.
