为什么uglifyjs不会删除死代码?

时间:2015-08-20 04:41:59

标签: javascript uglifyjs

例如,我有以下代码:

if ("a" !== "a") {
    console.log('really?');
}

var a = 5;

然后我写uglifyjs code.js -o code.min.js。因此,我有以下内容:

if("a"!=="a"){console.log("really?")}var a=5;

如何启用删除if语句中的死代码?

2 个答案:

答案 0 :(得分:12)

尽管这个问题已经得到了接受,但我认为值得一提的是

  1. UglifyJS2确实删除了死代码

  2. 要启用此功能,如果以编程方式调用uglifyjs --compress unused,dead_code,则需要在CLI(options)或uglify对象中设置适当的选项({{1 }})。

答案 1 :(得分:5)

根据uglifyjs的README,维护者已将开发工作转移到UglifyJS2。自述文件还说它只删除:

  

一些无法访问的代码并警告它(返回后的代码,   throw,break或continue语句,函数/变量除外   声明)。

Uglify2做得更全面。我在demo site上测试了你的代码,它确实删除了整个if语句。它还支持条件编译' (或者更正确的条件代码删除)允许你在uglifying时在命令行定义全局变量。