You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					150 lines
				
				4.1 KiB
			
		
		
			
		
	
	
					150 lines
				
				4.1 KiB
			| 
											3 years ago
										 | <p align="center"> | ||
|  | <strong>Announcement 📣</strong><br/>From the makers that brought you Dotenv, introducing <a href="https://sync.dotenv.org">Dotenv Sync</a>.<br/>Sync your .env files between machines, environments, and team members.<br/><a href="https://sync.dotenv.org">Join the early access list.💛</a> | ||
|  | </p> | ||
|  | 
 | ||
|  | # dotenv-expand
 | ||
|  | 
 | ||
|  | <img src="https://raw.githubusercontent.com/motdotla/dotenv-expand/master/dotenv-expand.png" alt="dotenv-expand" align="right" /> | ||
|  | 
 | ||
|  | Dotenv-expand adds variable expansion on top of  | ||
|  | [dotenv](http://github.com/motdotla/dotenv). If you find yourself needing to | ||
|  | expand environment variables already existing on your machine, then | ||
|  | dotenv-expand is your tool. | ||
|  | 
 | ||
|  | [](https://travis-ci.org/motdotla/dotenv-expand) | ||
|  | [](https://www.npmjs.com/package/dotenv-expand) | ||
|  | [](https://github.com/feross/standard) | ||
|  | 
 | ||
|  | ## Install
 | ||
|  | 
 | ||
|  | ```bash | ||
|  | # Install locally (recommended)
 | ||
|  | npm install dotenv-expand --save | ||
|  | ``` | ||
|  | 
 | ||
|  | Or installing with yarn? `yarn add dotenv-expand` | ||
|  | 
 | ||
|  | ## Usage
 | ||
|  | 
 | ||
|  | Create a `.env` file in the root of your project: | ||
|  | 
 | ||
|  | ```dosini | ||
|  | PASSWORD="s1mpl3" | ||
|  | DB_PASS=$PASSWORD | ||
|  | 
 | ||
|  | ``` | ||
|  | 
 | ||
|  | As early as possible in your application, import and configure dotenv and then expand dotenv: | ||
|  | 
 | ||
|  | ```javascript | ||
|  | var dotenv = require('dotenv') | ||
|  | var dotenvExpand = require('dotenv-expand') | ||
|  | 
 | ||
|  | var myEnv = dotenv.config() | ||
|  | dotenvExpand.expand(myEnv) | ||
|  | 
 | ||
|  | console.log(process.env) | ||
|  | ``` | ||
|  | 
 | ||
|  | That's it. `process.env` now has the expanded keys and values you defined in your `.env` file. | ||
|  | 
 | ||
|  | ### Preload
 | ||
|  | 
 | ||
|  | You can use the `--require` (`-r`) [command line option](https://nodejs.org/api/cli.html#cli_r_require_module) to preload dotenv & dotenv- | ||
|  | . By doing this, you do not need to require and load dotenv or dotenv-expand in your application code. This is the preferred approach when using `import` instead of `require`. | ||
|  | 
 | ||
|  | ```bash | ||
|  | $ node -r dotenv-expand/config your_script.js | ||
|  | ``` | ||
|  | 
 | ||
|  | The configuration options below are supported as command line arguments in the format `dotenv_config_<option>=value` | ||
|  | 
 | ||
|  | ```bash | ||
|  | $ node -r dotenv-expand/config your_script.js dotenv_config_path=/custom/path/to/your/env/vars | ||
|  | ``` | ||
|  | 
 | ||
|  | Additionally, you can use environment variables to set configuration options. Command line arguments will precede these. | ||
|  | 
 | ||
|  | ```bash | ||
|  | $ DOTENV_CONFIG_<OPTION>=value node -r dotenv-expand/config your_script.js | ||
|  | ``` | ||
|  | 
 | ||
|  | ```bash | ||
|  | $ DOTENV_CONFIG_ENCODING=latin1 node -r dotenv-expand/config your_script.js dotenv_config_path=/custom/path/to/.env | ||
|  | ``` | ||
|  | 
 | ||
|  | ## Examples
 | ||
|  | 
 | ||
|  | See [tests/.env](https://github.com/motdotla/dotenv-expand/blob/master/tests/.env) for simple and complex examples of variable expansion in your `.env` | ||
|  | file. | ||
|  | 
 | ||
|  | ## Documentation
 | ||
|  | 
 | ||
|  | DotenvExpand exposes one function: | ||
|  | 
 | ||
|  | * expand | ||
|  | 
 | ||
|  | ### Expand
 | ||
|  | 
 | ||
|  | `expand` will expand your environment variables. | ||
|  | 
 | ||
|  | ```js | ||
|  | const dotenv = { | ||
|  |   parsed: { | ||
|  |     BASIC: 'basic', | ||
|  |     BASIC_EXPAND: '${BASIC}', | ||
|  |     BASIC_EXPAND_SIMPLE: '$BASIC' | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | const obj = dotenvExpand.expand(dotenv) | ||
|  | 
 | ||
|  | console.log(obj) | ||
|  | ``` | ||
|  | 
 | ||
|  | #### Options
 | ||
|  | 
 | ||
|  | ##### ignoreProcessEnv
 | ||
|  | 
 | ||
|  | Default: `false` | ||
|  | 
 | ||
|  | Turn off writing to `process.env`. | ||
|  | 
 | ||
|  | ```js | ||
|  | const dotenv = { | ||
|  |   ignoreProcessEnv: true, | ||
|  |   parsed: { | ||
|  |     SHOULD_NOT_EXIST: 'testing' | ||
|  |   } | ||
|  | } | ||
|  | const obj = dotenvExpand.expand(dotenv).parsed | ||
|  | 
 | ||
|  | console.log(obj.SHOULD_NOT_EXIST) // testing | ||
|  | console.log(process.env.SHOULD_NOT_EXIST) // undefined | ||
|  | ``` | ||
|  | 
 | ||
|  | ## FAQ
 | ||
|  | 
 | ||
|  | ### What rules does the expansion engine follow?
 | ||
|  | 
 | ||
|  | The expansion engine roughly has the following rules: | ||
|  | 
 | ||
|  | * `$KEY` will expand any env with the name `KEY` | ||
|  | * `${KEY}` will expand any env with the name `KEY`  | ||
|  | * `\$KEY` will escape the `$KEY` rather than expand | ||
|  | * `${KEY:-default}` will first attempt to expand any env with the name `KEY`. If not one, then it will return `default` | ||
|  | 
 | ||
|  | You can see a full list of examples [here](https://github.com/motdotla/dotenv-expand/blob/master/tests/.env). | ||
|  | 
 | ||
|  | ## Contributing Guide
 | ||
|  | 
 | ||
|  | See [CONTRIBUTING.md](CONTRIBUTING.md) | ||
|  | 
 | ||
|  | ## CHANGELOG
 | ||
|  | 
 | ||
|  | See [CHANGELOG.md](CHANGELOG.md) | ||
|  | 
 | ||
|  | ## Who's using dotenv-expand?
 | ||
|  | 
 | ||
|  | [These npm modules depend on it.](https://www.npmjs.com/browse/depended/dotenv-expand) |