我正在使用PM2来管理节点上的几个微应用的执行。我的本地机器CWD
上:有没有办法通过改变PM2中的环境来切换cwd - node.js
目标: 但是我想能够自动切换设置,并根据应用程序在执行环境cwd
值
例如应该是~/user/pm2
,而在服务器上它需要是E:\Programs\PM2
。
有没有办法做到这一点使用JSON配置选项与PM2?有没有更好的方法来管理不同环境下的变量?
我正在使用PM2来管理节点上的几个微应用的执行。我的本地机器CWD
上:有没有办法通过改变PM2中的环境来切换cwd - node.js
目标: 但是我想能够自动切换设置,并根据应用程序在执行环境cwd
值
例如应该是~/user/pm2
,而在服务器上它需要是E:\Programs\PM2
。
有没有办法做到这一点使用JSON配置选项与PM2?有没有更好的方法来管理不同环境下的变量?
你可以保存一个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
如果你不想通过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));
然后,您可以要求配置文件并访问它,以确保它始终返回正确的配置。
我一直希望有一种方法来使用pm2 json配置文件来完成它,但是我会把它作为一个备选方案。 – Deltatuk
没关系,但请注意,它遵循节点,grunt和npm的惯例,在一个命令/脚本下附加一组配置设置。尽力而为。 – morels