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...");
    }
  });
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow