Skip to content

vobi-io/realm-env

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Env Usage

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"
    }
  }
}

Releases

No releases published

Packages

No packages published