我正在使用 console.assert 进行测试/调试,但我希望在生产代码中删除它。目前,我基本上是将 console.assert 覆盖为一个 noop 函数,但想知道是否有更好的方法。如果有一些 JavaScript 预处理器可以删除这个函数,那就太理想了。
我正在使用 console.assert 进行测试/调试,但我希望在生产代码中删除它。目前,我基本上是将 console.assert 覆盖为一个 noop 函数,但想知道是否有更好的方法。如果有一些 JavaScript 预处理器可以删除这个函数,那就太理想了。
UglifyJS2 能够轻松实现此功能: 运行 uglifyjs
命令时,启用压缩器并告诉它丢弃 console.*
调用:
uglifyjs [input files] --compress drop_console
快速示例:
function doSomething() {
console.log("This is just a debug message.");
process.stdout.write("This is actual app code.\n");
}
doSomething();
...会得到以下结果:
function doSomething(){process.stdout.write("This is actual app code.\n")}doSomething();
function doSomething() {
var i = 0;
console.log("This is just a debug message." + (++i));
process.stdout.write("This is actual app code." + i + "\n");
}
doSomething();
...编译为
function doSomething(){var i=0;process.stdout.write("This is actual app code."+i+"\n")}doSomething();
...它将i
写成0
而不是1
!
试试闭包编译器,在高级模式下它可以删除空函数(以及更多内容)。
var console = {}; console.log = function(x,y) {}; console.log(1, Math.random());
- 编辑:没有警告foo(1,Math.random());
,并且这行代码没有被编译器触及,所以我猜它被认为是在其他地方定义的,因此不应该过于激进地进行优化(就像console
一样)。 - kapex另一个工具是UglifyJS,它与nodejs一起使用。它快速且有很多选项供您查看。
console.assert
进来! - user166390