Що робить fs.watch()?
У 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
}
});Особливості та обмеження
- Поведінка залежить від ОС Node.js використовує системні API:
inotifyна Linux,FSEventsна macOS,ReadDirectoryChangesWна Windows. Тому події можуть трохи відрізнятися на різних платформах.
- Не всі зміни гарантовано будуть спіймані, особливо якщо багато файлів змінюються одночасно.
fs.watch()не читає вміст файлу, вона лише повідомляє, що щось змінилося.- Для надійнішого спостереження (з буфером і обробкою пропущених подій) краще використати бібліотеку chokidar - вона крос-платформна й стабільніша.
Підсумок
fs.watch()- це вбудована функція Node.js для спостереження за змінами файлів і папок. Вона викликає callback при подіях типу"change"чи"rename", і корисна для задач на кшталт:
- автоматичного перезавантаження конфігурацій,
- пересборки проєкту при зміні файлів,
- моніторингу логів чи директорій.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.