Как я могу создать команду CLI "watch", используя "fs.watch ()" и "child_process"? - PullRequest
0 голосов
/ 26 марта 2019

Я в настоящее время собираю CLI, у него есть функция / команда «наблюдения», которая запускает функцию всякий раз, когда данный файл изменяется.Однако мне нужно, чтобы эта функция «наблюдения» запускалась в отдельном процессе, потому что я не хочу, чтобы выходные данные «наблюдения» портили историю терминала.Например, когда пользователь выходит из команды watch, все, что он выводил ранее, должно быть удалено.Кроме того, очень важно, чтобы дочерний процесс был очищен перед повторным выводом, потому что я буду печатать таблицы с данными, которые могут изменяться при каждом обновлении файла.

Однако приведенный ниже код работает, как мне хочетсяпользователям необходимо завершить два разных процесса: один из | less -r и один из fs.watch.

const fs = require('fs');
const {spawn} = require('child_process');

const outputFunction = () => {
  return 'I am the output!';
};

fs.watch('fileToWatch', () => {
  spawn(`cat <<< '${outputFunction()}' | less -r`, {
    stdio: 'inherit',
    shell: true,
  });
});

Любая помощь приветствуется и приветствуется.

...