Selectively replace Node-style environment variables with plain strings. Available as a standalone CLI tool and a Browserify v2 transform.
Works best in combination with uglifyify.
If you're using the module with Browserify:
npm install envify browserify
Or, for the CLI:
sudo npm install -g envify
envify will replace your environment variable checks with ordinary strings -
only the variables you use will be included, so you don't have to worry about,
say, AWS_SECRET_KEY
leaking through either. Take this example script:
if (process.env.NODE_ENV === "development") {
console.log('development only')
}
After running it through envify with NODE_ENV
set to production
, you'll
get this:
if ("production" === "development") {
console.log('development only')
}
By running this through a good minifier (e.g. UglifyJS2), the above code would be stripped out completely.
With browserify:
browserify index.js -t envify > bundle.js
Or standalone:
envify index.js > bundle.js
You can also specify additional custom environment variables using browserify's subarg syntax, which is available in versions 3.25.0 and above:
browserify index.js -t [ envify --NODE_ENV development ] > bundle.js
browserify index.js -t [ envify --NODE_ENV production ] > bundle.js
require('envify')
Returns a transform stream that updates based on the Node process'
process.env
object.
require('envify/custom')([environment])
If you want to stay away from your environment variables, you can supply your own object to use in its place:
var browserify = require('browserify')
, envify = require('envify/custom')
, fs = require('fs')
var b = browserify('main.js')
, output = fs.createWriteStream('bundle.js')
b.transform(envify({
NODE_ENV: 'development'
}))
b.bundle().pipe(output)