4.0.0-alpha.2 • Published 1 year ago

@injex/env-plugin v4.0.0-alpha.2

Weekly downloads
10
License
MIT
Repository
github
Last release
1 year ago

Env Plugin

The Env Plugin defines and manages multiple environment variables based on the process.env.NODE_ENV variable, with a fallback to default variables option.

The plugin adds the relevant environment object to the runtime container so you can inject it into any module as a dependency.

This is NOT a runtime specific plugin and can be used on all Injex's runtimes.

Installation

You can install the Env Plugin via NPM

npm install --save @injex/env-plugin

or Yarn

yarn add @injex/env-plugin

Initialization

Creating the plugin and passing it to the runtime container config object

import { Injex } from "@injex/node";
import { EnvPlugin } from "@injex/env-plugin";

Injex.create({
    rootDirs: [__dirname],
    plugins: [
        new EnvPlugin({
            name: 'env',
            current: "production",
            defaults: {
                myVar: 123
            },
            environments: {
                development: {
                    logLevel: "verbose"
                },
                production: {
                    logLevel: "silence"
                }
            }
        })
    ]
});

Configurations

You can pass the following configurations to the EnvPlugin.

name

The environment object name, as it will be used in the runtime container for later injection.

  • Type: string
  • Default: env
  • Required: false

current

Enforce an environment by its name.

  • Type: string
  • Default: process.env.NODE_ENV
  • Required: false

defaults

An object with default values to be used as a fallback to the selected environment.

  • Type: object
  • Default: {}
  • Required: false

environments

An object contains the environments and their variables.

For example:

const plugin = new EnvPlugin({
    ...
    environments: {
        development: {
            arg1: 1,
            arg2: 2
        },
        production: {
            arg1: 3,
            arg2: 4
        },
        test: {
            arg1: 5,
            arg2: 6
        }
    }
});
  • Type: object
  • Default: {}
  • Required: false

Usage

To inject the environment object created by the plugin into other modules using the @inject() decorator.

@define()
@singleton()
export class MyService {
    @inject() private env;

    @init()
    public initialize() {
        console.log(this.env.logLovel); // "silence"
        console.log(this.env.myVar); // 123
    }
}
4.0.0-alpha.1

1 year ago

4.0.0-alpha.2

1 year ago

4.0.0-alpha.0

1 year ago

3.5.1

2 years ago

3.5.0

2 years ago

3.3.9

3 years ago

3.3.8

3 years ago

3.3.7

3 years ago

3.3.6

3 years ago

3.4.0

3 years ago

3.3.1

3 years ago

3.3.0

3 years ago

3.3.5

3 years ago

3.3.4

3 years ago

3.3.3

3 years ago

3.3.2

3 years ago

3.2.1

3 years ago

3.2.0

3 years ago

3.1.1

3 years ago

3.1.0

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

4 years ago

3.0.0

4 years ago

3.0.0-alpha.6

4 years ago

3.0.0-alpha.5

4 years ago

3.0.0-alpha.4

4 years ago

3.0.0-alpha.3

4 years ago

3.0.0-alpha.2

4 years ago

3.0.0-alpha.1

4 years ago

3.0.0-alpha.0

4 years ago

2.1.0

4 years ago

2.0.10

4 years ago

2.0.9

4 years ago

2.0.8

4 years ago

2.0.7

5 years ago

2.0.6

5 years ago

2.0.5

5 years ago

2.0.3

5 years ago

2.0.4

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

2.0.0-alpha.7

5 years ago

2.0.0-alpha.6

5 years ago

2.0.0-alpha.5

5 years ago

2.0.0-alpha.4

5 years ago

2.0.0-alpha.3

5 years ago

2.0.0-alpha.1

5 years ago

2.0.0-alpha.2

5 years ago