You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
npm install unreachable-branch-transform
Example outputs
// original vartransport=process.env.TARGET==='client' ? require('ajax') : require('fs');// after envifyvartransport='server'==='client' ? require('ajax') : require('fs');// then after unreachable-branch-transformvartransport=require('fs');
// originalif(process.env.NODE_ENV==='development'){console.log('in dev mode');}else{console.log('in some other mode');}// after envifyif('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
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'.