Recherche…
Configurations d'environnement avancées
Pour les applications plus complexes, vous voudrez créer un objet `` settings.json` en utilisant plusieurs variables d'environnement.
if(Meteor.isServer){
Meteor.startup(function()){
// this needs to be run on the server
var environment, settings;
environment = process.env.METEOR_ENV || "development";
settings = {
development: {
public: {
package: {
name: "jquery-datatables",
description: "Sort, page, and filter millions of records. Reactively.",
owner: "LumaPictures",
repo: "meteor-jquery-datatables"
}
},
private: {}
},
staging: {
public: {},
private: {}
},
production: {
public: {},
private: {}
}
};
if (!process.env.METEOR_SETTINGS) {
console.log("No METEOR_SETTINGS passed in, using locally defined settings.");
if (environment === "production") {
Meteor.settings = settings.production;
} else if (environment === "staging") {
Meteor.settings = settings.staging;
} else {
Meteor.settings = settings.development;
}
console.log("Using [ " + environment + " ] Meteor.settings");
}
});
}
Spécification des paramètres de l'application avec METEOR_SETTINGS
La variable d'environnement METEOR_SETTINGS peut accepter des objets JSON et exposera cet objet dans l'objet Meteor.settings
. Tout d'abord, ajoutez un settings.json
à votre racine d'application avec des informations de configuration.
{
"public":{
"ga":{
"account":"UA-XXXXXXX-1"
}
}
}
Ensuite, vous devrez lancer votre application en utilisant votre fichier de paramètres.
# run your app in local development mode with a settings file
meteor --settings settings.json
# or bundle and prepare it as if you're running in production
# and specify a settings file
meteor bundle --directory /path/to/output
cd /path/to/output
MONGO_URL="mongodb://127.0.0.1:27017" PORT=3000 METEOR_SETTINGS=$(cat /path/to/settings.json) node main.js
Ces paramètres peuvent alors être accessibles à partir de Meteor.settings et utilisés dans votre application.
Meteor.startup(function(){
if(Meteor.isClient){
console.log('Google Analytics Account', Meteor.settings.public.ga.account);
}
});
Détection d'environnement sur le serveur
Les variables d'environnement sont également disponibles pour le serveur via l'objet process.env
.
if (Meteor.isServer) { Meteor.startup(function () { // detect environment by getting the root url of the application console.log(JSON.stringify(process.env.ROOT_URL)); // or by getting the port console.log(JSON.stringify(process.env.PORT)); // alternatively, we can inspect the entire process environment console.log(JSON.stringify(process.env)); }); }
Détection de l'environnement client à l'aide des méthodes Meteor
Pour détecter l'environnement sur le serveur, nous devons créer une méthode d'assistance sur le serveur, car le serveur déterminera dans quel environnement il se trouve, puis appellera la méthode d'assistance à partir du client. Fondamentalement, nous transmettons simplement les informations sur l'environnement du serveur au client.
//------------------------------------------------------------------------------------------------------
// server/server.js
// we set up a getEnvironment method
Meteor.methods({
getEnvironment: function(){
if(process.env.ROOT_URL == "http://localhost:3000"){
return "development";
}else{
return "staging";
}
}
});
//------------------------------------------------------------------------------------------------------
// client/main.js
// and then call it from the client
Meteor.call("getEnvironment", function (result) {
console.log("Your application is running in the " + result + "environment.");
});
Détection de l'environnement client à l'aide de NODE_ENV
À partir de Meteor 1.3, Meteor expose désormais la variable NODE_ENV
sur le client par défaut.
if (Meteor.isClient) { Meteor.startup(function () { if(process.env.NODE_ENV === "testing"){ console.log("In testing..."); } if(process.env.NODE_ENV === "production"){ console.log("In production..."); } }); }