首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在发布版本中移除断言?

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

Stack Overflow用户
提问于 2015-07-09 05:51:47
回答 2查看 78关注 0票数 0

我使用babelify + watchify + envify + uglify并设置node_env watchify ... -g [envify --NODE_ENV development]

所以我想要这样断言:

代码语言:javascript
复制
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的实际调用。

在没有太多额外代码的情况下,是否有可能从发布版本中适当地删除断言调用?

EN

回答 2

Stack Overflow用户

发布于 2015-07-09 05:59:15

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

代码语言:javascript
复制
jsfmt --rewrite "assert.equal(a, b, c) -> ''" file.js

还没有测试,但它可能会完成它的工作。它将所有出现的assert.equal替换为空字符串。

票数 0
EN

Stack Overflow用户

发布于 2015-07-09 06:36:11

通常情况下,您将使用多种工具。正如您所说,envify将转换为

代码语言:javascript
复制
if(process.env.NODE_ENV !== 'production'){

代码语言:javascript
复制
if('production' !== 'production'){

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31304490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档