如何 运行 两个不同的节点应用程序(forceios 和 forcedroid)需要一个命令的可变参数

How to run two different node apps (forceios and forcedroid) requiring variable arguments with one command

所以,有两个完全不同的包,它们有自己的 package.json 文件和命令集。 forcedroid 和 forceios。这些中的每一个都有一些参数......并且它们的顺序相同。然后将参数带入应用程序并使用 and/or 进行操作。

它们是全局安装的。

分别对运行的命令如下:

forceios 创建 argv1 argv2 argv3 forcedroid 创建 argv1 argv2 argv3

理想情况下,我想创建一个命令来统治它们。

强制创建 argv1 argv2 argv3

我想用这个命令来执行上面的每一个。

受您问题的启发,我尝试编写基本的全局 node_module forceboth,它可以 运行 仅使用一个 forceboth.

两个命令

您可以克隆 repo 和 运行 npm install -g 以全局安装包。

或者,保存以下代码并运行 node cmd.js create argv1 argv2 argv3

cmd.js

var args = [];

process.argv.forEach(function (val, index, array) {
  args.push(val);
});

var foreiOS = new run_cmd(
  'forceios',args,
  function (me, buffer) { me.stdout += buffer.toString() },
  function () { console.log(foreiOS.stdout) }
);

var foreDriod = new run_cmd(
  'forcedroid',args,
  function (me, buffer) { me.stdout += buffer.toString() },
  function () { console.log(foreDriod.stdout) }
);    

function run_cmd(cmd, args, cb, end) {
   var spawn = require('child_process').spawn;
   var child = spawn(cmd, args);
   var me = this;
   child.stdout.on('data', function (buffer) { cb(me, buffer) });
   child.stdout.on('end', end);
}

代码可能存在问题。如果您有任何问题,请更新它。