dragonmnl
dragonmnl

Reputation: 15558

Meteor: how to load different files based on CLI parameter?

In my Meteor (1.2) app I've separated files for development and production

e.g.

Ideally the "twin" files have the same variables, functions etc. with little differences but (global) variables and functions which are common to debug and production have the same name.

Is there a way to call meteor run with a command line parameter DEBUG_MODE = true | false so that I cad load either one or the other file, depending on the current mode (debug, production)?

Upvotes: 0

Views: 45

Answers (1)

brianlmerritt
brianlmerritt

Reputation: 2852

Set different environmental variables and run via CLI with meteor run --settings settings.json

Then you just need a development and production (and staging?) settings.json

Example of a settings file:

{
  "awsBucket": "my-example-staging",
  "awsAccessKeyId": "AABBCCddEEff12123131",
  "awsSecretKey": "AABBCCddEEff12123131+AABBCCddEEff12123131",
  "public": {
    "awsBucketUrl": "https://my-meteor-example.s3.amazonaws.com",
    "environment": "staging"
  },
  "googleApiKey": "AABBCCddEEff12123131"
}

EDIT ADD:

To access your environmental keys, just select

Meteor.settings.awsBucket

Security Update (thanks Dave Weldon)

See https://docs.meteor.com/#/full/structuringyourapp

Re production vs development, you should have two settings.json files, the standard one for production (.config/settings.json) and a development one (.config/development/config.json) and when you boot outside of production you boot meteor --settings .config/development/settings.json

Re client side, note that if you make the key public e.g.

{
  "service_id":"...",
  "service_secret":"...",
  "public":{
      "service_name":"..."
  }
}

Then only Meteor.settings.public.service_name will be accessible on the client

Upvotes: 2

Related Questions