我使用babelify + watchify + envify + uglify并设置node_env watchify ... -g [envify --NODE_ENV development]
所以我想要这样断言:
import assert from 'assert';
function debug_assert(actual, expected, message = 'AssertionError'){
if(process.env.NODE_ENV !== 'production'){
assert.equal(actual, expected, message);
}
}uglify足够聪明,可以在代码中去掉debug_assert的主体,但不是对debug_assert的实际调用。
在没有太多额外代码的情况下,是否有可能从发布版本中适当地删除断言调用?
发布于 2015-07-09 05:59:15
您可以使用jsfmt及其代码重写功能:
jsfmt --rewrite "assert.equal(a, b, c) -> ''" file.js还没有测试,但它可能会完成它的工作。它将所有出现的assert.equal替换为空字符串。
发布于 2015-07-09 06:36:11
通常情况下,您将使用多种工具。正如您所说,envify将转换为
if(process.env.NODE_ENV !== 'production'){至
if('production' !== 'production'){这意味着if的主体永远不会执行。
在此之后,您可以做的最简单的事情是使用uglifyify,因为它将执行死代码消除并删除if。
https://stackoverflow.com/questions/31304490
复制相似问题