[英]How can I call a different Node.js script from my own?
我正在构建一个使用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
,它打开了2个Node.exe
实例。
您可以使用child_process.fork
: https : child_process.fork
这是child_process.spawn()功能的特例,用于生成Node.js进程。 除了在正常的ChildProcess实例中包含所有方法之外,返回的对象还内置了一个通信通道。 有关详细信息,请参见[child.send(message,[sendHandle])] []。
或者,如果您不想产生新的NodeJS进程,则可以使用vm
模块: https : //nodejs.org/api/vm.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.