README
util.env
Manages environment type and version strings for a project.
This module contains helper functions for interacting with the application runtime environment to determine its type. It has three types of environments:
- Development
- Test
- Production
Installation
This module uses yarn to manage dependencies and run scripts for development.
To install as an application dependency:
$ yarn add --dev util.env
To build the app and run all tests:
$ yarn run all
Usage
This module is generally used during the build process under CI to identify the type of build being performed. The mode is determined in one of two ways.
- NODE_ENV environment variable set to
development
,test
, orproduction
. - A command line option
The command line arguments passed to the build used to determine the type are:
--development
--testing
--production
API
It exposes the following functions that can be used within the build:
getBranch()
- retrieves the git branch name for this package for that modegetMode()
- gets the current mode string (development, test, production)getVersion()
- gets the version string associate with this modeisDevelopment()
- the '--development' flag was passed.isTesting()
- the '--testing' flag was passedisProduction()
- the '--production' flag was passedshow()
- prints debug information to the console.
The use of this module also exposes the getVersion
function. When this function is called it will determine the type and build the corresponding version string. When the environment is development or testing the string is:
{branch}_r{revision count}-b{build number}
Where branch is the name of the branch where this build is occuring. In development this is usually the develop
branch. When it is the testing environment it is usually the master
. The revision count is computed from git. It counts the number of revisions associated with that branch. The build number is retrieved from the environment. In Jenkins this is an environment variable set to $BUILD_NUMBER
. This script assumes Jenkins.
When the environment is production the string uses semver.
{major}.{minor}.{revision count}
The major
and minor
versions are retrieved from package.json
. The revision count is computed from git (the same as testing/development).