node-env-type
Version:
NodeJS Environment Type detection.
91 lines (66 loc) • 2.92 kB
Markdown
# node-env-type
Easy detection of NodeJS environment type from `NODE_ENV` variable.
This library is 100% compatible with the standard `development`/`test`/`production` approach,
with a friendlier interface, while also supporting a more verbose syntax, to allow for
a flexible environment configuration.
## Installing
```
$ npm i node-env-type
```
## Usage
* In TypeScript:
```ts
import {env} from 'node-env-type';
if(env.isDev) {
// this is a DEV environment
}
```
* In JavaScript:
```ts
const {env} = require('node-env-type');
if(env.isProd) {
// this is a PROD environment
}
```
## Environment Flags
Table below explains available flags and when they are set.
| Flag | Environment | Condition |
|:--------:|:--------------------------:|:-----------|
| `isDev` | Development | `NODE_ENV` includes `dev` (case-insensitive) |
| `isUAT` | User Acceptance Testing | `NODE_ENV` includes `uat` (case-insensitive) |
| `isSIT` | System Integration Testing | `NODE_ENV` includes `sit` (case-insensitive) |
| `isCI` | Continuous Integration | `NODE_ENV` includes `ci` (case-insensitive) |
| `isTest` | General Testing | `NODE_ENV` includes any of: `test`, `tst`, `uat`, `sit`, `ci` (case-insensitive)|
| `isProd` | Production | `NODE_ENV` includes `prod` (case-insensitive), or not set at all. |
Flags are tested in the order as shown in the table, to use only the first one found, in case there's a conflict.
#### Special Cases
* `isTest` - set not only when `NODE_ENV` includes `test` or `tst`, but also when `isUAT`, `isSIT` or `isCI`
is set, because all those environments are essentially for testing.
* `isProd` - set not only when `NODE_ENV` includes `prod`, but also when `NODE_ENV` is not set at all,
i.e. when environment is not configured, we should assume it to be production.
* When `NODE_ENV` is set to something we cannot recognize at all, each flag is set to `false`.
## API
The only API available other than the environment flags is function `refresh`, in case you want
to refresh flags from the environment without restarting the process.
```ts
import {env} from 'node-env-type';
if(env.refresh()) {
// successfully recognized the environment;
// each flag updated from NODE_ENV
} else {
// failed to recognize the environment;
// each flag is set to false
}
```
And if, for some reasons, you decide to read configuration from a different place, rather than
the standard `NODE_ENV`, you can pass such optional string to the function:
```ts
const otherVar = 'dev1.pc'; // just some other value
if(env.refresh(otherVar)) {
// successfully recognized the environment;
// each flag updated from otherVar
} else {
// failed to recognize the environment;
// each flag is set to false
}
```