Browserify transform to remove unreachable code
npm install unreachable-branch-transformunreachable-branch-transform
============================

Removes unreachable code branches in if statements, ternaries ?, and logical operations || &&, where the test is determinable (like comparing two constants). This is similar to what UglifyJS's "dead_code" compressor option does, but without the extra code transformations.
When combined with something like envify and browserify, you can perform conditional require calls without including more code than you need.
#### Install ####
``bash`
npm install unreachable-branch-transform
#### Example outputs #####
`js
// original
var transport = process.env.TARGET === 'client' ? require('ajax') : require('fs');
// after envify
var transport = 'server' === 'client' ? require('ajax') : require('fs');
// then after unreachable-branch-transform
var transport = require('fs');
`
`js
// original
if (process.env.NODE_ENV === 'development') {
console.log('in dev mode');
} else {
console.log('in some other mode');
}
// after envify
if ('production' === 'development') {
console.log('in dev mode');
} else {
console.log('in some other mode');
}
// then after unreachable-branch-transform
{
console.log('in some other mode');
}
`
#### Usage
* unreachable-branch-transform can be used a browserify transform. Just include it like any other transform.unreachable-branch-transform
* can also be used on raw code by calling the transform function exposed by requiring the package.
#### Frequently asked questions ####
##### Why are undefined equality references not removed?
If you have a branch with the format
`javascript`
if (undefined === 'production') {
/ ... /
}
it will not be removed. Unfortunately, undefined is _not_ a constant in older browser runtimes and can be reassigned. In this case, it could be possible that undefined does indeed equal 'production'.
Credit
------
esmangle-evaluator` is from the esmangle project.