Node.js 合并/命名PM2应用程序

Node.js 合并/命名PM2应用程序,node.js,pm2,Node.js,Pm2,有PM2配置,/home/foo/someconfig.json { "apps": [ { "name": "foo-main", "script": "./index.js", }, { "name": "foo-bar", "script": "./bar.js" }, { "name

有PM2配置,
/home/foo/someconfig.json

{
    "apps": [
        {
            "name": "foo-main",
            "script": "./index.js",
        },
        {
            "name": "foo-bar",
            "script": "./bar.js"
        },
        {
            "name": "foo-baz",
            "script": "./baz.js"
        }
    ]
}
大多数时候,我想引用当前名称空间下的所有应用程序,例如

pm2 restart foo
而不是做

pm2 restart foo-main foo-bar foo-baz
无法使用Bash大括号扩展,因为应用程序可能在Windows中运行

执行
pm2重启/home/foo/someconfig.json
不是一个好选项,因为它需要一些时间来确定配置文件路径,它可能在项目之间有所不同,甚至更改其位置


foo-*
应用程序可以合并到单个
foo
应用程序中,还是可以以另一种合理的方式一起引用?

看来
pm2
本身不支持基于通配符的重启,但使用一个简单的脚本进行重启并不复杂

下面是一个工作脚本,演示了这个想法:

var pm2 = require('pm2');

pm2.connect(function(err) {
  if (err) {
    console.error(err);
    process.exit(2);
  }

  pm2.list(function(err, processDescriptionList) {
    if (err) throw err;
    for (var idx in processDescriptionList) {
      var name = processDescriptionList[idx]['name'];
      console.log(name);
      if (name.startsWith('foo')) {
        pm2.restart(name, function(err, proc) {
          if (err) throw err;
          console.log('Restarted: ');
          console.log(proc);
        });
      }
    }
  });
});
为了使其功能全面,还需要将
foo
作为命令行参数传递(现在它是硬编码的)并处理exit(现在它工作,但在完成时不退出)


以下是示例,包括小样本应用程序和配置。

谢谢,这是pm2 API的一个很好的用法。我希望有一个常规的方法来做到这一点,因为没有额外麻烦的全局
pm2
命令有它的好处。