在生产代码中删除console.assert

时间:2011-09-13 06:29:02

标签: javascript

我正在使用console.assert进行测试/调试,但我想在生产代码中删除它。我现在基本上覆盖了console.assert是一个noop函数,但想知道是否有更好的方法。如果有一些javascript预处理器可以删除它,那将是理想的。

3 个答案:

答案 0 :(得分:5)

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();

这可能是一个UglifyJS2错误,但要注意这些调用中的副作用

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();

... write i0而不是1

答案 1 :(得分:3)

尝试Closure Compiler,在高级模式下,它会删除空函数(以及更多)。

答案 2 :(得分:1)

另一个工具是UglifyJS,它与nodejs一起使用。这很快,并且有很多选项供您查看。