2016-06-10 2 views
1

Я использую PM2 для управления выполнением нескольких микро-приложений на узле.Есть ли способ переключить cwd, изменив среду в PM2 - node.js

Цель:. Однако я хотел бы, чтобы иметь возможность автоматически переключать настройки и значение cwd на основе среды приложение выполняется в

Например: на моей локальной машине CWD должен быть ~/user/pm2, тогда как на сервере это должно быть E:\Programs\PM2.

Есть ли способ сделать это с использованием опций конфигурации JSON с PM2? Есть ли лучший способ управлять переменными для разных сред?

ответ

0

вы можете сохранить сценарий оболочки, скажем pm2_dev.sh, содержащий команду cd в качестве первой строки.

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

ИЛИ вы можете добавить вход в сценарий:

# pm2_dev.sh ~/user/pm2 

файл должен быть:

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

Я надеялся, что вы воспользуетесь конфигурационным файлом pm2 json, но я буду помнить об этом в качестве альтернативы. – Deltatuk

+0

все в порядке, но помните, что он следует обычной практике узла, grunt и npm для включения набора параметров обеспечения в рамках одной команды/скрипта. ты лучший. – morels

0

Если вы не хотите, чтобы изменить окружающую среду с помощью скрипта, вы можете следовать 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)); 

Тогда вам может потребоваться файл конфигурации и получить к нему доступ, чтобы он всегда возвращал правильную конфигурацию.

Смежные вопросы