realm-env

[Realm Env](https://www.npmjs.com/package/realm-env) package builds [MongoDB Realm](https://docs.mongodb.com/realm/) functions/triggers on multiple environments. Main purpose of this function is to avoid writing same function twice for development/stagin

Downloads
65
Stars
6
Committers
1

Realm Env

Realm Env package builds MongoDB Realm functions/triggers on multiple environments. Main purpose of this function is to avoid writing same function twice for development/staging/production environments.

Setup

Install realm-env package in you application

$ npm install --save realm-env

OR

$ yarn add realm-env

Add script in package.json

{
  "scripts": {
    "build-realm": "realm-env ./config.json"
  },
}

After you are done configuring Realm Env you to build your application on multiple environments run

$ npm run build-realm

OR

$ yarn build-realm

Usage

you should wrap environment variables inside brackets

For example you have DB_NAME variable set inside environment syntax is as this follows

Configuration

To configure Realm Env you should create one JSON configuration file

Parameters:

  • functionsPath -> Path to your functions written in MongoDB Realm function syntax
  • triggersPath -> Path to your triggers written in MongoDB Realm trigger syntax
  • destFolder -> Path where generated files will be placed
  • realmConfig -> MongoDB Realm config.json file JSON Object
  • functions -> Formatted list of function objects with following format
    For Example you want to create deleteUsers function on dev environment
    Syntax is as it follows
{
  "functions": { // List of functions
    "deleteUsers": { // Function name
      "env": ["dev"] // List of function environments
    }
  },
}
  • triggers -> Formatted list of trigger objects with following format
    For Example you want to create deleteUsers trigger on dev environment
    Syntax is as it follows
{
  "triggers": { // List of triggers
    "deleteUsersTrigger": { // Trigger name
      "env": ["dev"] // List of triggers environments
    }
  },
}
  • env -> List of Environment Configuration. For example you want to share DB_NAME environment variable syntax is as it follows:
{
  "env": {
    "production": { // Environment Name
      "DB_NAME": "production" // Environment Variable
    },
    "staging": {
      "DB_NAME": "staging"
    },
    "dev": {
      "DB_NAME": "dev"
    }
  }
}

Example Configuration

Example configuration of Realm Application where you want to create deleteUsers function and trigger on dev and staging environment and share DB_NAME environment variable

{
  "functionsPath": "./src/functions",
  "triggersPath": "./src/triggers",
  "destFolder": "./build",
  "functions": {
    "deleteUsers": {
      "env": ["dev", "staging"]
    }
  },
  "triggers": {
    "deleteUsersTrigger": {
      "env": ["dev", "staging"]
    }
  },
  "realmConfig": {},
  "env": {
    "production": {
      "DB_NAME": "production"
    },
    "staging": {
      "DB_NAME": "staging"
    },
    "dev": {
      "DB_NAME": "dev"
    }
  }
}