2016-06-10 74 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)); 

然後,您可以要求配置文件並訪問它,以確保它始終返回正確的配置。

相關問題