Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ladjs/dotenv-parse-variables
Parse dotenv files for Boolean, Array, and Number variable types, built for Lad
https://github.com/ladjs/dotenv-parse-variables
config dotenv dotfile env environment factor parse twelve variables vars
Last synced: 3 months ago
JSON representation
Parse dotenv files for Boolean, Array, and Number variable types, built for Lad
- Host: GitHub
- URL: https://github.com/ladjs/dotenv-parse-variables
- Owner: ladjs
- License: mit
- Created: 2016-07-30T20:47:36.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-02-12T18:33:33.000Z (over 3 years ago)
- Last Synced: 2024-07-13T11:23:19.770Z (4 months ago)
- Topics: config, dotenv, dotfile, env, environment, factor, parse, twelve, variables, vars
- Language: JavaScript
- Homepage: https://lad.js.org
- Size: 294 KB
- Stars: 124
- Watchers: 1
- Forks: 13
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# dotenv-parse-variables
[![build status](https://travis-ci.com/niftylettuce/dotenv-parse-variables.svg)](https://travis-ci.com/niftylettuce/dotenv-parse-variables)
[![code coverage](https://img.shields.io/codecov/c/github/niftylettuce/dotenv-parse-variables.svg)](https://codecov.io/gh/niftylettuce/dotenv-parse-variables)
[![code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/sindresorhus/xo)
[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![made with lass](https://img.shields.io/badge/made_with-lass-95CC28.svg)](https://lass.js.org)
[![license](https://img.shields.io/github/license/niftylettuce/dotenv-parse-variables.svg)](LICENSE)> Parse dotenv files for `Boolean`, `Array`, and `Number` variable types, built for [Lad][] and [Forward Email][fe].
## Table of Contents
* [Install](#install)
* [Example](#example)
* [Usage](#usage)
* [Options](#options)
* [Contributors](#contributors)
* [License](#license)## Install
[npm][]:
```sh
npm install dotenv-parse-variables
```[yarn][]:
```sh
yarn add dotenv-parse-variables
```## Example
Imagine you have a configuration file at `.env` with the following:
```bash
FOO=bar
BAZ=2
BEEP=false
BOOP=some,thing,that,goes,wow
# note how we use an asterisk here to turn off the parsing for this variable
BLEEP=false*
# note how we use an asterisk in the array to turn off parsing for an array key value
PING=ping,true*,2,100
# note a string between bacticks won't be parsed
PONG=`some,thing,that,goes,wow`
```After using this plugin, the environment variables are parsed to their proper types.
To test it out, simply log the returned object in your console:
```js
console.log(env);
```And you'll see that it outputs the properly parsed variable types:
```js
{
// String
FOO: 'bar',
// Number
BAZ: 2,
// Boolean
BEEP: false,
// Array
BOOP: [ 'some', 'thing', 'that', 'goes', 'wow' ],
// NOTE: this was not parsed due to the * asterisk override above
BLEEP: 'false',
// NOTE: only the "true*" above was opted out through the use of an asterisk
PING: [ 'ping', 'true', 2, 100 ],
// NOTE: this was not parsed because the string was between bacticks
PONG: 'some,thing,that,goes,wow'
}
```If your configuration line ends in `*` it will not be parsed by this package, which allows you to keep values as the `String` variable type if needed. Also when you encapsulate a value between bacticks e.g. \`value\`, the value won't be parsed and it will return as a `String` variable. This can be used in situations where you for example have a `,` inside your string and it should not be parsed as an array.
## Usage
This package works well with [dotenv][dotenv], however we also recommend to use [dotenv-extended][dotenv-extended] and [dotenv-expand][dotenv-expand] as we do in [Lad][]. You could also simply just use [Lad][] or [@ladjs/env][] specifically.
> Example with `dotenv`:
```js
const dotenv = require('dotenv');
const dotenvParseVariables = require('dotenv-parse-variables');let env = dotenv.config({})
if (env.error) throw env.error;
env = dotenvParseVariables(env.parsed);console.log(env);
```> Example with `dotenv-extended` (which supports a well-defined `.env` file) and `dotenv-expand` (which supports variable interpolation):
```js
const dotenvExtended = require('dotenv-extended');
const dotenvMustache = require('dotenv-mustache');
const dotenvParseVariables = require('dotenv-parse-variables');let env = dotenvExtended.load({
silent: false,
errorOnMissing: true,
errorOnExtra: true
});
env = dotenvMustache(env);
env = dotenvParseVariables(env);console.log(env);
```If you don't want to use this package to parse variable types, you could also use [getenv][getenv] (but it requires more work).
## Options
A second argument can be provided to `dotenvParseVariables` with an object of options.
The defaults are listed below:
* `assignToProcessEnv` (Boolean) - defaults to `true`, whether or not to assign the parsed values to `process.env`
* `overrideProcessEnv` (Boolean) - defaults to `false`, whether or not to override existing values in `process.env`
* `ignoreFunctions` (Boolean) - defaults to `true`, whether or not to ignore functions in the parsed values returned## Contributors
| Name | Website |
| -------------- | ------------------------- |
| **Nick Baugh** | |## License
[MIT](LICENSE) © Nick Baugh
##
[lad]: https://lad.js.org
[fe]: https://forwardemail.net
[npm]: https://www.npmjs.com/
[yarn]: https://yarnpkg.com/
[dotenv]: https://github.com/motdotla/dotenv
[dotenv-expand]: https://github.com/motdotla/dotenv-expand
[dotenv-extended]: https://github.com/keithmorris/node-dotenv-extended
[getenv]: https://github.com/ctavan/node-getenv
[@ladjs/env]: https://github.com/ladjs/env