env-to-code
Version:
The module to parse process.env[SOME_KEY] into JavaScript variable or JavaScript code, especially, which is especially very useful for webpack.EnvironmentPlugin
127 lines (93 loc) • 3.31 kB
Markdown
[](https://travis-ci.org/kaelzhang/env-to-code)
[](https://codecov.io/gh/kaelzhang/env-to-code)
<!-- optional appveyor tst
[](https://ci.appveyor.com/project/kaelzhang/env-to-code)
-->
<!-- optional npm version
[](http://badge.fury.io/js/env-to-code)
-->
<!-- optional npm downloads
[](https://www.npmjs.org/package/env-to-code)
-->
<!-- optional dependency status
[](https://david-dm.org/kaelzhang/env-to-code)
-->
The module to parse `process.env[SOME_KEY]` into JavaScript variable or JavaScript code, especially, which is very useful for [`webpack.EnvironmentPlugin`](https://webpack.js.org/plugins/environment-plugin/)
```sh
$ npm i env-to-code
```
```sh
export FOO=bar
export BAZ=1
export DEBUG=false
```
```js
import {
js,
code
} from 'env-to-code'
js(process.env.FOO) === 'bar' // true
code(process.env.FOO) === '"bar"' // true
js(process.env.BAZ) === 1 // true
js(process.env.DEBUG) === false // true
code(process.env.DEBUG) === 'false' // true
// But
JSON.stringify(process.env.DEBUG) === '"false"' // true
new webpack.DefinePlugin({
'process.env.DEBUG': code(process.env.DEBUG)
})
```
- **s** `string` environment variable string
- **config** `?Object` optional config
- **testJSON** `?boolean=false` whether to test if `s` is a JSON. `testJSON` takes effect ahead of `arrayDelimiter`.
- **arrayDelimiter** `?string=','` by default, it will try to split the env variable into array with `arrayDelimiter`. To disable this feature, set the option to `false` or `''`
Parses the environment variable into JavaScript variable.
```js
js('English, Chinese') // ['English', 'Chinese']
js('English') // 'English'
js('English, Chinese', {
arrayDelimiter: false
})
// 'English, Chinese'
```
**PAY ATTENTION THAT** with `testJSON=false` and `arrayDelimiter=','` which are the default options, method `js()` will split JSON array into an unexpected result, for example:
```js
js('["a","b"]')
// [
// '["a"',
// '"b"]'
// ]
```
So, if environment variables contains JSON strings, it is better to set `testJSON` to `true`:
```js
js('["a","b"]', {testJSON: true})
// ['a', 'b']
```
## code(s, config?)
This method has the same arguments as `js()`, and parses `s` into JavaScript code string.
So it is useful for [`webpack.EnvironmentPlugin`](https://webpack.js.org/plugins/environment-plugin/) or writing JavaScript code into files.
```js
new webpack.DefinePlugin({
'process.env.NODE_ENV': code(process.env.NODE_ENV),
'process.env.DEBUG': code(process.env.DEBUG)
})
```
or
```js
// write.js
fs.writeFileSync('foo.js', `module.exports = {debug:${code(process.env.DEBUG)}}`)
```
```sh
DEBUG=true node write.js
```
And in foo.js
```js
module.exports = {debug:true}
```
MIT