Meteorアプリケーションを開発、テスト、または本番環境として実行する場合は、異なるアカウントプロバイダーの構成を使用する必要があります。
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は、meteor
を実行すると、環境変数NODE_ENVを「開発」に設定します。本番環境では、変数を任意の値に設定できます。設定しない場合、デフォルトで「本番環境」になります。
更新:これがクライアントとサーバーで機能するようにスマートパッケージを作成しました。
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"
「public」の設定はサーバーとクライアントの両方で使用できますが、他のすべて(この場合は「anotherProperty」)はサーバーでのみ使用できることに注意してください。
その後、環境ごとに異なる構成ファイルを作成できます。
非常に簡単。私は自分のアプリを5つ(はい、5つ!)の異なる環境で実行しています。以下に示すように、4つの異なる環境でROOT_URLでswitchステートメントを使用するだけです。もちろん、環境が2つしかない場合は、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;
}
_
一般に、javascriptのswitchステートメントの形式は次のとおりです。
_switch(expression) {
case n:
code block
break;
case n:
code block
break;
default:
default code block
}
_
UPDATE:MeteorはMeteor.absoluteUrl()
を提供するようになりました。これは、_process.env.ROOT_URL
_に似ていますが、機能が追加されています。 docs を参照してください。
それを可能にするオープン プルリクエスト がgithubにあります。コメント/投票してください。含まれる可能性が高くなります。
これを達成するための本当に厄介な方法
https://github.com/possibilities/meteor-environment-hooks
注:インターフェースはOKです私見、実装は厄介です