我正在为Node.js编写一个应用程序。我想执行一个像VSCode这样的外部文本编辑器,等待用户输入任何文本并保存它们。之后,应用程序将从文本编辑器接收保存的数据作为stdin。我的意思是,它的作用与git commit[ENTER]
相同。
我尝试使用open [path to app]
命令,但效果不佳。进程退出,无需等待。
有办法做到这一点吗?
您不需要外部库。您可以使用child_process.spawn启动程序,然后使用fs.watch等待对文件的更改。当出现更改时(或编辑器关闭时(,您可以再次读取文件。
代码(未测试(:
import {spawn} from "child_process";
import fs from "fs";
function getEditorInput(editorCmd, file, cb) {
const process = spawn(editorCmd, [file]);
process.on('close', (code) => {
// re-read file, and cb
});
// OR
const watcher = fs.watch(file, (ev, f) => {
// re-read file, call cb
})
}
请注意,您应该在某个时刻(比如编辑器关闭后(使用watcher.close()
关闭观察程序。