Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що робить fs.watch()?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)`fs.watch()` стежить за файлом чи папкою й викликає callback з типом події (`rename` чи `change`), коли щось змінюється; вона не читає вміст файлу, а лише повідомляє, що сталася зміна. **Ключове:** поведінка залежить від ОС (inotify на Linux, FSEvents на macOS, ReadDirectoryChangesW на Windows) і не гарантує, що жодна подія не буде пропущена - для надійнішого спостереження краще використати бібліотеку chokidar.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняУ Node.js функція `fs.watch()` використовується для **відстеження змін у файловій системі** - тобто вона "стежить" за файлами чи папками й викликає callback, коли щось змінюється. ## Сигнатура ```javascript fs.watch(filename[, options][, listener]) ``` ### Аргументи: - `filename` - шлях до файлу чи директорії, за якою потрібно спостерігати. - `options` *(необов'язково)*: - `persistent`: `true` за замовчуванням - якщо `false`, спостереження не утримуватиме процес Node.js "живим"; - `recursive`: `true` - спостерігати рекурсивно за всіма піддиректоріями (тільки на macOS і Windows); - `encoding`: кодування для імен файлів (за замовчуванням `'utf8'`). - `listener` - callback, який викликається при змінах. ## Приклад ```javascript const fs = require('fs'); fs.watch('./data', (eventType, filename) => { console.log(`Подія: ${eventType}`); console.log(`Змінено файл: ${filename}`); }); ``` Можливі значення `eventType`: - `"rename"` - файл був **перейменований, створений чи видалений**; - `"change"` - файл був **змінений** (наприклад, його вміст оновився). ## Приклад практичного застосування Відстеження змін конфігураційного файлу: ```javascript fs.watch('config.json', (eventType) => { if (eventType === 'change') { console.log('Файл конфігурації оновлено! Перечитую налаштування...'); // Можна, наприклад, перечитати JSON } }); ``` ## Особливості та обмеження 1. **Поведінка залежить від ОС** Node.js використовує системні API: - `inotify` на Linux, - `FSEvents` на macOS, - `ReadDirectoryChangesW` на Windows. Тому події можуть трохи відрізнятися на різних платформах. 2. **Не всі зміни гарантовано будуть спіймані**, особливо якщо багато файлів змінюються одночасно. 3. `fs.watch()` **не читає вміст файлу**, вона лише повідомляє, **що** щось змінилося. 4. Для надійнішого спостереження (з буфером і обробкою пропущених подій) краще використати бібліотеку [**chokidar**](https://www.npmjs.com/package/chokidar) - вона крос-платформна й стабільніша. ## Підсумок > `fs.watch()` - це вбудована функція Node.js для **спостереження за змінами файлів і папок**. > Вона викликає callback при подіях типу `"change"` чи `"rename"`, > і корисна для задач на кшталт: > > - автоматичного перезавантаження конфігурацій, > - пересборки проєкту при зміні файлів, > - моніторингу логів чи директорій.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.