如何使用“ fs.watch()”和“ child_process”创建CLI“ watch”命令?

时间:2019-03-26 09:48:39

标签: node.js command-line-interface fs child-process

我当前正在构建一个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,
  });
});

任何帮助都将受到欢迎和赞赏。

0 个答案:

没有答案