Out of the box application environment and configuration service.
MIT License
Out of the box application environment and configuration service.
Need to manage several environment and configurations for your
knifecycle
based app? This module
is all what your need.
Out of the box, standard compliant, application environment:
NODE_ENV
values: test
, development
, production
,APP_ENV
environmentdotenv
to read environment variables,./configs/${APP_ENV}/index
file).It requires log
and importer
services to be passed in, you can find
implementations in the
common-services
project.
It also relies on constant services you will have to provide: APP_ENV
,
NODE_ENV
and the MAIN_FILE_URL
(directory where actual code is).
Provides the PROCESS_ENV service : Object Kind: global constant
Cast any string into an application environment
Kind: global function Returns: string
Param | Description |
---|---|
appEnv | string |
availableAppEnvs | string[] |
Initialize the APP_CONFIG service according to the APP_ENV
Kind: global function Returns: Promise.<Object> - A promise of a an object the actual configuration properties.
Param | Type | Default | Description |
---|---|---|---|
services | Object | The services APP_CONFIG depends on |
|
services.APP_ENV | Object | The injected APP_ENV value |
|
services.MAIN_FILE_URL | String | An URL pointing to the main file run | |
services.importer | Object | A service allowing to dynamically import ES modules | |
[services.log] | Object | noop | An optional logging service |
Initialize the ENV service using process env plus dotenv files
loaded in .env.node.${ENV.NODE_ENV}
and .env.app.${APP_ENV}
.
Kind: global function Returns: Promise.<Object> - A promise of an object containing the actual env vars.
Param | Type | Default | Description |
---|---|---|---|
services | Object | The services ENV depends on |
|
[services.BASE_ENV] | Object | Base env vars that will be added to the environment | |
services.APP_ENV | Object | The injected APP_ENV value |
|
services.PROCESS_ENV | Object | The injected process.env value |
|
services.PROJECT_DIR | Object | The NodeJS project directory | |
[services.log] | Object | noop | An optional logging service |
Instantiate the process service
Kind: global function Returns: Promise.<Object> - A promise of the process object
Param | Type | Default | Description |
---|---|---|---|
services | Object | The services process depends on |
|
services.APP_ENV | Object | The injected APP_ENV value |
|
[services.PROCESS_NAME] | Object | The process name to display | |
[services.SIGNALS] | Object | The process signals that interrupt the process | |
[services.exit] | Object | A process.exit like function |
|
services.$instance | Object | The Knifecycle instance | |
services.$fatalError | Object | The Knifecycle fatal error manager | |
[services.log] | Object | noop | An optional logging service |
Initialize the PROJECT_DIR service
Kind: global function Returns: Promise.<Object> - A promise of a an object the actual configuration properties.
Param | Type | Default | Description |
---|---|---|---|
services | Object | The services PROJECT_DIR depends on | |
[services.log] | Object | noop | An optional logging service |