我怎样才能调用与自己不同的Node.js脚本呢



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

为了便于用户使用,我在自己的应用程序中使用了Commander的git样式的子命令。该模块要求每个充当二进制文件的子命令都有一个单独的.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);
});

所以基本上,我试图将另一个二进制文件封装在我自己的二进制文件中。这个方法有效,但感觉有点黑客,它打开了Node.exe的两个实例。

您可以使用child_process.fork:https://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

相关内容

  • 没有找到相关文章

最新更新