如何在发布版本中删除断言?

时间:2015-07-08 21:51:47

标签: javascript assert babeljs watchify

我使用babelify + watchify + envify + uglify并设置node_env $(document).ready(function() { $('#btn1').click(function() { $("ol").append("<li>"+$("#txt1").val()+"</li>"); $("#txt1").val("").focus(); $('li').addClass('block2'); $('ol').sortable(); $('li').click(function() { $(this).hide(500, function() { $(this).remove('li'); }); }); });

所以我想到这样断言:

watchify ... -g [envify --NODE_ENV development]

uglify非常聪明,可以删除debug_assert的主体,但不会在代码中实际调用debug_assert。

如果没有太多的额外代码,可以从发布版本中正确删除断言调用吗?

2 个答案:

答案 0 :(得分:0)

您可以使用jsfmt及其代码重写功能:

jsfmt --rewrite "assert.equal(a, b, c) -> ''" file.js

尚未经过测试,但它可能会发挥作用。它用空字符串替换所有出现的assert.equal

答案 1 :(得分:0)

通常你会使用一系列工具。正如您所说,envify将转换

if(process.env.NODE_ENV !== 'production'){

if('production' !== 'production'){

意味着if的主体永远不会执行。

之后你可以做的最简单的事情是使用uglifyify,因为它会执行死代码删除并删除if