2012-05-06 3 views
3

Я хотел бы передать аргументы командной строки моему приложению Meteor при запуске.Как передать аргументы командной строки в приложение Meteor?

Например, --dev, --test или --prod, указывая, работает ли он в средах dev, test или prod. Затем он может загружать различные ресурсы на запуск и т.д ...

Я пытался что-то вроде этого в /server/server.js

var arguments = process.argv.splice(2); 
console.log('cmd args: ' + JSON.stringify(arguments,0,4)); 

The Я провел тест. И немало других с просто случайными аргументами командной строки.

meteor --dev 

Выход на консоли - это только это.

cmd args: [ 
    "--keepalive" 
] 

Что является лучшим способом получить аргументы командной строки в приложении Meteor?

Или это даже правильный способ решения проблемы более высокого уровня? а если нет, то каков правильный способ решить эту проблему разграничения между запуском enviro?

ответ

8

Meteor не перенаправляет командной строке args в ваше приложение, если оно не знает их. У вас есть несколько возможностей:

  1. Перепишите части meteor.js для пересылки непризнанных аргументов. Это не должно быть слишком сложно, но это не очень хорошее решение. И если происходят обновления, у вас проблемы. : D
  2. Вы можете написать небольшой файл конфигурации и изменить поведение своего приложения на основе параметров конфигурации там. Взгляните на this question.
  3. Проще всего использовать переменные среды. Вы можете читать env vars в узле, например this. После этого вы можете запустить приложение «express.js»: $ METEOR_ENV=production meteor

Я надеюсь, что смогу вам помочь! :)

1

Причина, по которой она не работает, состоит в том, что команда meteor запускает прокси-сервер (который получает аргументы, которые вы даете), а затем он запускает приложение метеоров с помощью --keepalive.

process.argv будет иметь правильные значения, если вы построите Метеор с помощью meteor build --directory /my/build/path и запустите его.

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