функции? Это некий вотчер, который следит за определенной папкой и если один из файлов в папке или подпапках изменился, то он запускает функцию reload. Он проверяет на изменение каждую секунду и я боюсь что в моей реализации возможна утечка памяти или что-то подобное.
☻function watchChanges(dir) {
watch(dir)
function watch(dir, lastTimestamp) {
console.log("watch tick")
getTimestampForFilesInDirectory(dir).then(timestamp => {
if (!lastTimestamp || (lastTimestamp === timestamp)) {
setTimeout(() => watch(dir, timestamp), 1000)
} else {
reload()
}
})
}
}
Тебе лучше сделать не через опрос по таймауту, а вешать вотчер который будет реагировать именно на изменение в фс
+ setTimeout ебаный костыль
да, смотри вот это https://nodejs.org/api/fs.html#fs_class_fs_fswatcher
понятно. в моем случае это невозможно.
А если содержимое файла поменяется, а дата модификации не поменяется?
так и работает.так и нужно.
Выглядит нелогично. Была картинка с сиськами, например, а её заменили на картинку с борщём, но вотчер этого не просечёт
если борщ сохранили, то просечет.
Без проблем можно подменить один файл другим Более того, время модификации файла устанавливается программно, так что вообще нет проблем заменить содержимое файла и отредактировать время его модификации
А кому это надо в браузере
А кому надо следить за изменениями файлов в браузере?
Резонно 🙂
все это понятно... я контекст применения не писал чтобы вопрос не раздувать. это для разработки расширений для браузера. мониторится папка расширения. когда ide сохр. код расширение перезапускается
ну так это все же нода
всмысле?
Ну а как иначе ты мониторишь локальную файловую систему? У браузера не очень то с доступом.
есть апи такое. расширению можно мониторить свою папку. я разные варианты для вебпака смотрел, но не нашел варианта как перезагружать content script
что за апи такое которое из браузера позволяет получить доступ к локальной файловой системе? конетент скрипты релоадятся перезагрузкой всех табов
dir.createReader().readEntries(cb). фоновые расширения так не релоадятся, а релоадятся так chrome.runtime.reload()
https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API оно?
ага
ну и что?
Оно не дает доступа к локальной файловой системе. Оно даёт доступ к песочнице, виртуальной файловой системе.
надо в манифесте расширения добавить разрешение "management"
чем оно поможет?
а в чем проблема? к чему рассуждения что там и как? я написал тулзу, которая решает мою задачу. Я глубоко не копал, потому что у меня нет времени.
никаких проблем, работает и хорошо
Обсуждают сегодня