2016-06-10 120 views
1

我正在使用PM2来管理节点上的几个微应用的执行。我的本地机器CWD上:有没有办法通过改变PM2中的环境来切换cwd - node.js

目标: 但是我想能够自动切换设置,并根据应用程序在执行环境cwd

例如应该是~/user/pm2,而在服务器上它需要是E:\Programs\PM2

有没有办法做到这一点使用JSON配置选项与PM2?有没有更好的方法来管理不同环境下的变量?

回答

0

你可以保存一个shell脚本,比如说pm2_dev.sh包含cd命令作为第一行。

#!/bin/bash 
cd /foo/bar 
pm2-dev run my-app.js 

OR您可以添加输入到你的脚本:

# pm2_dev.sh ~/user/pm2 

文件应该是:

#!/bin/bash 
cd $1 
pm2-dev run my-app.js 
+0

我一直希望有一种方法来使用pm2 json配置文件来完成它,但是我会把它作为一个备选方案。 – Deltatuk

+0

没关系,但请注意,它遵循节点,grunt和npm的惯例,在一个命令/脚本下附加一组配置设置。尽力而为。 – morels

0

如果你不想通过shell脚本来改变环境,你可以按照documentation way

{ "apps" : [{ 
    "script"  : "worker.js", 
    "watch"  : true, 
    "env": { 
     "NODE_ENV": "development", 
    }, 
    "env_production" : { 
     "NODE_ENV": "production" 
    } },{ 
    "name"  : "api-app", 
    "script"  : "api.js", 
    "instances" : 4, 
    "exec_mode" : "cluster" }] } 

当运行应用程序,你应该使用--env选项as it is written here

--env指定环境得到 具体ENV变量(JSON声明)

最后你可以用根据当前环境条件返回参数的js对象中的配置:

module.exports = (function(env){ 

    if(env === 'development') 
    return { folder: '~/user/pm2' }; 

    else if(env === 'production') 
    return { folder: 'E:\Programs\PM2' }; 

}(process.env.NODE_ENV)); 

然后,您可以要求配置文件并访问它,以确保它始终返回正确的配置。

相关问题