Com base na resposta de attekei para OSX:
$ brew install fswatch
Jogue tudo isso em reload.scpt
:
function run(argv) {
if (argv.length < 1) {
console.log("Please supply a (partial) URL to reload");
return;
}
console.log("Trying to reload: " + argv[0]);
let a = Application("Google Chrome");
for (let i = 0; i < a.windows.length; i++) {
let win = a.windows[i];
for (let j = 0; j < win.tabs.length; j++) {
let tab = win.tabs[j];
if (tab.url().startsWith("file://") && tab.url().endsWith(argv[0])) {
console.log("Reloading URL: " + tab.url());
tab.reload();
return;
}
}
}
console.log("Tab not found.");
}
Isso recarregará a primeira guia que encontrar que começa file://
e termina com o primeiro argumento da linha de comando. Você pode ajustá-lo conforme desejado.
Finalmente, faça algo assim.
fswatch -o ~/path/to/watch | xargs -n1 osascript -l JavaScript reload.scpt myindex.html
fswatch -o
produz o número de arquivos que foram alterados em cada evento de alteração, um por linha. Normalmente, será apenas impresso 1
. xargs
lê esses 1
s em e -n1
significa que passa cada um como um argumento para uma nova execução de osascript
(onde será ignorado).