如何在发布构建中删除断言
How to have asserts removed in release build?
我使用babelify + watchify + envify + uglify并设置node_envwatchify ... -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。
如果没有太多额外的代码,是否有可能从发布版本中正确删除断言调用?您可以使用jsfmt及其代码重写功能:
jsfmt --rewrite "assert.equal(a, b, c) -> ''" file.js
还没有测试,但它可能会起作用。它将所有出现的assert.equal
替换为一个空字符串。
通常您会使用多种工具的组合。如您所说,envify
将转换
if(process.env.NODE_ENV !== 'production'){
if('production' !== 'production'){
意味着if
的主体永远不会执行。
之后你可以做的最简单的事情是使用uglifyify
,因为它将执行死代码消除,并将删除if
。
相关文章:
- 使用php或javascript从facebook相册URL中删除多余的部分
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 我应该如何从xml文件构建一个javascript页面
- 如何删除多行HTML排列中的空白
- 如何在DOM元素上按类型构建此函数
- 如何从rails中的代码中删除新行( )
- 删除对HTML元素的拖动
- Sencha Touch构建-排除文件
- 当图像转换为本地存储的DataURL时,EXIF被删除
- RubyonRails——构建交互式接口应该朝哪个方向发展
- 按顺序添加和删除类
- iframe正在添加标签,需要删除它们
- 如何构建一个jQuery驱动的切换器来添加/删除css属性
- 如何在webpack——watch时从构建目录中删除旧文件
- 删除动态构建的表中的行
- 当grunt构建用于prod时,删除dev/sit代码
- 从语义UI构建中删除未使用的模块/组件
- 如何在发布构建中删除断言
- 将列表从一个文本字段构建到另一个文本域,然后选择从列表中删除项目
- 当复选框为True时,删除angular中构建的数组中的对象