0

我正在构建一个应用程序,它使用 Node.js 将多个 CLI 应用程序捆绑在一起以供内部使用。我正在使用几个 NPM 依赖项,其中一些有自己的 CLI 命令二进制文件。

为了用户友好,我在自己的应用程序中使用了Commandergit 风格的子命令.js该模块要求每个充当二进制文件的子命令都有一个单独的文件。

这类似于我到目前为止所拥有的,以及我想要完成的事情:

var program = require('commander'),
    spawn   = require('child_process').spawn;

program.parse(process.argv);

var args = ['./node_modules/exampleDep/.bin/index.js'].push(program.args);

var wrap = spawn('node', args);

wrap.stdout.on('data', function (data) {
  process.stdout.write(data);
});

wrap.stderr.on('data', function (data) {
  process.stderr.write(data);
});

所以基本上我试图在我自己的内部包装另一个二进制文件。此方法有效,但感觉有点 hack-ish,它会打开 2 个Node.exe.

4

1 回答 1

0

您可以使用child_process.forkhttps ://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options

这是用于生成 Node.js 进程的 child_process.spawn() 功能的一个特例。除了在普通 ChildProcess 实例中包含所有方法外,返回的对象还内置了一个通信通道。有关详细信息,请参阅 [child.send(message, [sendHandle])][]。

或者如果您不想生成新的 NodeJS 进程,您可以使用vm模块: https ://nodejs.org/api/vm.html

于 2015-12-02T03:03:30.003 回答