Pull to refresh

Comments 7

У fs.watch и fs.watchFile слишком много проблем. Вместо них, большинство проектов уже давно используют chokidar, в котором учтены все проблемы fs модуля.

Создаешь chokidar.watch с нужными опциями, например:

var watcher = chokidar.watch(path, {
  ignored: /(^|[\/\\])\../,
  ignoreInitial: true, 
  depth: 10, 
  awaitWriteFinish: {
    stabilityThreshold: 2000,
    pollInterval: 100
  },
}).on('all', (event, path) => {
  console.log(`Chokidar event: ${event}, ${path}`)
})


ignored: /(^|[\/\\])\../ отбросит dot файлы
depth: 10 ограничит глубину сканирования до 10 уровней.

И не нужно вычислять никакой md5 для того, чтобы избавиться от ненужных сообщений

В что в плане производительности можете сказать? Это обёртка над fs.watch или же написаный на с++ с нуля модуль?

chokidar это обертка node.js fs.watch / fs.watchFile / fsevents
При использовании fs.watchFile нагружает CPU меньше, чем оригинал. На странице модуля можно посмотреть список других преимуществ
Если у fs.watch и fs.watchFile изначально
слишком много проблем
непонятно, за счёт чего обёртка их убирает
С помощью опций.

Например, при распаковки архива, оригинальные fs функции показывают сотни одинаковых сообщений. Обертка устраняет эту проблему с помощью awaitWriteFinish
В примере отслеживается один файл, и всё работает.
А если их несколько, и во время таймаута изменился ещё один, то второе изменение будет пропущено?
(Я понимаю, что это перевод, но, может, кто-нибудь уже знает ответ?)
В этой реализации — да. Но доработать чтобы было по таймеру на файл — несложно.
Sign up to leave a comment.