env-to-code

1.0.4 • Public • Published

Build Status Coverage

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

Install

$ npm i env-to-code

Usage

# bash 
export FOO=bar
export BAZ=1
export DEBUG=false
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)
})

js(s, config?)

  • 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('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('["a","b"]')
// [
//   '["a"',
//   '"b"]'
// ]

So, if environment variables contains JSON strings, it is better to set testJSON to true:

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 or writing JavaScript code into files.

new webpack.DefinePlugin({
  'process.env.NODE_ENV': code(process.env.NODE_ENV),
  'process.env.DEBUG': code(process.env.DEBUG)
})

or

// write.js
fs.writeFileSync('foo.js', `module.exports = {debug:${code(process.env.DEBUG)}}`)
DEBUG=true node write.js

And in foo.js

module.exports = {debug:true}

License

MIT

Package Sidebar

Install

npm i env-to-code

Weekly Downloads

4

Version

1.0.4

License

MIT

Unpacked Size

7.28 kB

Total Files

5

Last publish

Collaborators

  • kael