Ответ 1
Так как Meteor 1.3 эти флаги работают из коробки:
Meteor.isDevelopment
Meteor.isProduction
Meteor.isTest
Meteor.isAppTest
Мне нужно использовать разные конфигурации поставщиков учетных записей, когда приложение метеоритов работает как среда разработки, тестирования или производства.
Так как Meteor 1.3 эти флаги работают из коробки:
Meteor.isDevelopment
Meteor.isProduction
Meteor.isTest
Meteor.isAppTest
На сервере:
var inDevelopment = function () {
return process.env.NODE_ENV === "development";
};
var inProduction = function () {
return process.env.NODE_ENV === "production";
};
Meteor устанавливает переменную среды NODE_ENV в "development" при запуске meteor
. В процессе производства вы можете установить переменную так, как хотите, иначе она будет по умолчанию "production".
Обновление. Я создал интеллектуальный пакет, позволяющий этому работать на клиенте и сервере.
mrt add allow-env
Просто установите правила разрешения в файле сервера.
allowEnv({
NODE_ENV: 1
});
Вы можете использовать Meteor.settings
в сочетании с опцией --settings
, используемой при запуске meteor run
или meteor deploy
.
Например, чтобы запустить в режиме dev
, создайте файл JSON, назовите его meteorConfigDev.json и поместите в него следующее:
{
"public" : {
"mode" : "dev"
},
"anotherProperty" : "anotherValue"
}
Запустите приложение, используя
meteor --settings meteorConfigDev.json
На сервере и на клиенте вы можете получить доступ к "режиму", используя:
Meteor.settings.public.mode //in this case it will be "dev"
Обратите внимание, что настройки в "общедоступном" доступны как на сервере, так и на клиенте, тогда как все остальное (в данном случае "anotherProperty" ) доступно только на сервере.
Затем у вас могут быть разные файлы конфигурации для разных сред.
Очень легко. Я запускаю свое приложение в пяти (да, пять!) Разных средах. Я просто использую оператор switch на ROOT_URL, как показано ниже, для четырех разных сред. Конечно, вы можете использовать if-else, если у вас есть только две среды. Работает на сервере. Просто создайте новый файл с именем startup.js и используйте пример кода ниже. Ура!
switch (process.env.ROOT_URL) {
case "http://www.production.com/":
BLOCK OF CODE HERE
break;
case "http://www.staging.com/":
BLOCK OF CODE HERE
break;
case "http://www.development.com/":
BLOCK OF CODE HERE
break;
case "http://localhost:3000/":
BLOCK OF CODE HERE
break;
}
В общем, формат оператора switch в javascript равен
switch(expression) {
case n:
code block
break;
case n:
code block
break;
default:
default code block
}
ОБНОВЛЕНИЕ: Обратите внимание, что теперь Meteor предоставляет Meteor.absoluteUrl()
, который похож на process.env.ROOT_URL
с добавлением дополнительных функций. См. docs.
В github есть открытый запрос на перенос в github. Комментарий/Голосуйте за него, поэтому он скорее всего будет включен!
Очень грязный способ выполнить этот
https://github.com/possibilities/meteor-environment-hooks
Примечание: интерфейс в порядке IMHO, реализация запутана