我正在使用console.assert进行测试/调试,但我想在生产代码中删除它。我现在基本上覆盖了console.assert是一个noop函数,但想知道是否有更好的方法。如果有一些javascript预处理器可以删除它,那将是理想的。
答案 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
i
为0
而不是1
!
答案 1 :(得分:3)
尝试Closure Compiler,在高级模式下,它会删除空函数(以及更多)。
答案 2 :(得分:1)
另一个工具是UglifyJS,它与nodejs一起使用。这很快,并且有很多选项供您查看。