Socket
Book a DemoInstallSign in
Socket

sails-env-switch

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sails-env-switch

loads environment config based on SAILS_ENV value

1.0.0
latest
Source
npmnpm
Version published
Maintainers
1
Created
Source

sails-env-switch

sails-env-switch provides a NodeJS module to load config based on the SAILS_ENV environment variable. This module makes is easy to switch environment based on SAILS_ENV. This module is to be used in sails to load configurations without having any performance issues, mainly in production (since NODE_ENV is still same). This module takes the default config and return the config based on SAILS_ENV value, if SAILS_ENV is not there it will return the default config.

Installing sail-env-switch

The easiest way to install sails-env-switch is from NPM registry. Switch to your project directory and run the following command. Once installation completes, refer to the usage guidelines or the config/env directory to us it in your project.

npm install sails-env-switch --save

Usage

This module can be used in any sails project. The best way to understand how to use this module is to refer to examples. Examples are located in config/env of this project. We would elaborate few use cases.

A simple use case where SAILS_ENV is set to internal and we have sails app run in production

In this use-case, lets assume you want your sails project is in production and you have to use this project as external and internal service (which will be called by other user facing services) and you need different config for both these scenarios. This module will help you doing this as you need to define SAILS_ENV to internal in one of the environment and that instance will pick only the config defined in internal.js file of config/env of the sails project.

If you are using env-lift also in the sails project, this module should be used with env-lift

// production.js
modules.exports = require('env-lift').load('sails-project-name', require('sails-env-switch').switch('production',{
  port: 80,
  environment: 'production',
  routes: {
    'GET /foo': 'dummyController.get'
    'POST /bar': 'dummyController.post'
  }
}));

At this stage you have SAILS_ENV variable is set to internal.

Code for Internal.js

modules.exports = require('env-lift').load('sails-project-name', require('sails-env-switch').switch('internal',{
  port: 8080,
    environment: 'production',
    routes: {
      'GET /internal/foo': 'dummyController.getFoo'
      'POST /internal/bar': 'dummyController.postBar'
    }
}));

Now if you open the sails console and try to get the sails config and other variables.

sails.config.routes

This will give you the values of routes same as in the internal.js

routes: {
  'GET /internal/foo': 'dummyController.getFoo'
  'POST /internal/bar': 'dummyController.postBar'
}

and not the one in the production.js. Even though the NODE_ENV will be same as production.js but the config will be taken from internal.js. This will help us keep the environments clean and keep thing separately for internal and external behaviour of the service.

Some important thing

  • If SAILS_ENV is not defined, then the config will be picked by the sails as usual.
  • If SAILS_ENV is defined to some name, then the same named file should be present in config/env folder of sails, otherwise it will break
  • This module is not the alternative for env-lift, this module should be used with env-lift to switch the env config based on SAILS_ENV value.

Contribution

Contribution is accepted in form of Pull Requests that passes Travis CI tests. You should install this repository using npm install -d and run npm test locally before sending Pull Request.

Keywords

postman

FAQs

Package last updated on 15 Jun 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.