Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

env-to-code

kaelzhang11MIT1.0.4

The module to parse process.env[SOME_KEY] into JavaScript variable or JavaScript code, especially, which is especially very useful for webpack.EnvironmentPlugin

env-to-code, process.env, environment, webpack, defineplugin, environmentplugin

readme

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

changelog

History