Socket
Socket
Sign inDemoInstall

angular-environment-config

Package Overview
Dependencies
0
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    angular-environment-config

Environment configuration module for AngularJS


Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Install size
43.3 kB
Created
Weekly downloads
 

Readme

Source

angular-environment-config Build Status

Hostname based environment configuration module for AngularJS

Contents

Get it

  • Download the source (minified);
  • Install using npm: run $ npm i angular-environment-config from your console; or
  • Install using bower: run $ bower install angular-environment-config from your console

Use it

  1. Add 'luminous.environment' to your main module's list of dependencies

    angular.module('myWebApp', ['luminous.environment']);
    
  2. Configure your environments during config phase using the $appEnvironmentProvider

    $appEnvironmentProvider
        .addEnvironment('local', ['127.0.0.1', 'localhost', /\.local$/i], {});
    
  3. Set default properties for all environments using $appEnvironmentProvider.setDefaults()

    $appEnvironmentProvider
        .setDefaults({ titlePrefix: '', apiUrl: '/api/' });
    
  4. Access the readonly config variables for the current environment using the $appEnvironment service via the config property.

    $document[0].title = $appEnvironment.config.titlePrefix + 'My App';
    

Stare intently at this example of it

angular.module('myWebApp', [
    'luminous.environment',
]);

angular.module('myWebApp')
    .config(myWebAppConfig)
    .controller('MainViewController', MainViewController);

myWebAppConfig.$inject = ['$appEnvironmentProvider'];
function myWebAppConfig (  $appEnvironmentProvider){
    
    $appEnvironmentProvider
    
        // Default config for all environments
        .setDefaults({
            titlePrefix: '',
            apiUrl: '/api/',
        })
        
        // Local environment
        // Matches: 127.0.0.1, localhost, or any hostname that ends with .local
        .addEnvironment('local', ['127.0.0.1', 'localhost', /\.local$/i], {
            titlePrefix: 'LOCAL :: ',
            apiUrl: 'http://localhost:7331/',
        })
        
        // Production environment
        // Matches: www.my-app.com, and my-app.com
        .addEnvironment('production', /^(|www\.)my-app.com$/, {
            apiUrl: 'https://api.my-app.com/',
        })
        
        // Set the default environment to Local
        // In case the hostname doesn't match one of the rules above
        .defaultEnvironmentName('local');
    
}

MainViewController.$inject = ['$appEnvironment', '$document'];
function MainViewController (  $appEnvironment,   $document) {
    
    // Set the document title
    
    $document[0].title = $appEnvironment.config.titlePrefix
        + 'My App - Powered by things, that do things!';
    

    // The the local environment will now have the document title:
    //     LOCAL :: My App - Powered by things, that do things!

    // Whereas the live environment will now have the document title:
    //     My App - Powered by things, that do things!

}

API


Provider


$appEnvironmentProvider


addEnvironment(environmentName, hostnames, config)

Adds a new environment config -- identified by environmentName -- that will be used when the Angular app's $location.host() matches one of the Strings or RegExps provided in hostnames.

$appEnvironmentProvider
    .addEnvironment('local', ['127.0.0.1', 'localhost', /\.local$/i], {
        // Local environment would match '127.0.0.1', 'localhost', and any
        // hostname that ends with .local
        titlePrefix: 'LOCAL :: ',
        apiUrl: 'http://localhost:7331/',
    })
    .addEnvironment('testing', 'test.my-app.com', {
        // Testing environment would match 'test.my-app.com'
        titlePrefix: 'TESTING :: ',
        apiUrl: 'https://test-api.my-app.com/',
    })
    .addEnvironment('production', /^(www\.|)my-app.com$/i, {
        // Production environment would match 'my-app.com' with or without
        // the leading 'www.', but would not match 'foo.my-app.com'
        apiUrl: 'https://api.my-app.com/',
    });
Arguments
ParameterTypeDescription
environmentNameStringThe internal name for this environment (e.g. local)
hostnamesString RegExp ArrayHostname String or RegExp or an Array of such, used to match against $location.host().
configObjectThe environment configuration, to be applied to a new AppEnvironmentConfig on top of any defaults specified via $appEnvironmentProvider.setDefault().
Returns

$appEnvironmentProvider


useConfigFor(environmentName).whenHostnameMatches(hostname)

Specify the environmentName to use when the hostname matches hostname.

$appEnvironmentProvider
    .useConfigFor('testing')
        .whenHostnameMatches(/^preview\.[a-z0-9-]{3,}\.my-app.com/i);
Arguments
ParameterTypeDescription
environmentNameStringThe internal name of the environment (e.g. local)
hostnameString RegExpHostname String or RegExp for matching against $location.host()
Returns

$appEnvironmentProvider


defaultEnvironmentName(environmentName)

Specify the environmentName to fall back on when none of the specified environment hostnames match the current hostname.

$appEnvironmentProvider
    .defaultEnvironmentName('local');

Important note: If a default environment name is not specified, and the current hostname does not match a configured host name, the $appEnvironment service will throw an EnvLookupError during init.

Arguments
ParameterTypeDescription
environmentNameStringThe internal name of the environment to use when all else fails (e.g. local)
Returns

$appEnvironmentProvider


setDefaults(properties)

Set multiple default properties for $appEnvironment.config at once.

$appEnvironmentProvider
    .setDefaults({
        titlePrefix: '',
        apiUrl: '/api/',
    });
Arguments
ParameterTypeDescription
propertiesObjectDefault properties to add to $appEnvironment.config for all environments.
Returns

$appEnvironmentProvider


setDefault(key, value)

Specify a default value for key in $appEnvironment.config

$appEnvironmentProvider
    .setDefault('apiUrl', '/api/');
Arguments
ParameterTypeDescription
keyStringThe property name
value*The default value
Returns

$appEnvironmentProvider


Service


$appEnvironment


is(environmentName)

Determine if environmentName is the name of the current environment.

if (!$appEnvironment.is('production')) {
    // Logic that will effect all environments except 'production'
}
Arguments
ParameterTypeDescription
environmentNameStringThe name of the environment
Returns

Boolean --- true if the current environment name is environmentName, otherwise false.


environmentName

String --- The name of the current environment

if ('testing' === $appEnvironment.environmentName) {
    // Logic that will only effect the 'testing' environment
} else {
    // Logic that will effect all environments except 'testing'
}

config

AppEnvironmentConfig --- Configuration object for the current environment, values are read-only.

$document[0].title = $appEnvironment.config.titlePrefix + 
    'MyApp - Created by things, for things';

hostname

String -- The hostname of the current environment.

if ('localhost' === $appEnvironment.hostname) {
    // Logic that will only occur if the hostname used to identify the current
    // environment was 'localhost'
}

isDefault

Boolean --- true if default environment configuration is being used, otherwise false.

if (true === $appEnvironment.isDefault) {
    // Logic that will only occur if the current environment is the environment specified in $appEnvironmentProvider.defaultEnvironmentName()
}

Keywords

FAQs

Last updated on 27 Jan 2016

Did you know?

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

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc