UglifyJS不会破坏特定的关联数组

时间:2015-09-30 03:20:12

标签: javascript regex uglifyjs

我们所有的web服务都通过关联数组传递给我们的XHR。 IE:

new XHR({"year": 2015, "week": 6}, ...);

我们所有的脚本都被添加到一个文件中,然后通过(基本上破坏并压缩除了我们的入口点之外的所有内容)进行了Uglified:

uglifyjs --mangle toplevel --screw-ie8 --compress --mangle-regex="/(?s)^((?!$$).)*$/" --reserve-domprops --reserved-file reserved -- input

问题是,yearweek字段不断混淆。所以我尝试了$$面前,所以我们现在有$$year$$week。为了实现这一点,我在上面的UglifyJS命令中添加了正则表达式参数。我试图否定查找,因此它会破坏所有属性,除了那些在开始时带有$$的属性(可以是任何字符集,只使用$$作为起点)。

我的问题:

  1. 这是最好的方法吗?在UglifyJS中有没有办法忽略某些关联数组?
  2. 我的正则表达是对的吗?我试过逃避两个美元的迹象,我试过__而不是$$以及其他几次尝试(注意:我的正则表达式并不好)
  3. 如果正则表达式错误,是否有某个地方可以详细说明创建有效正则表达式的方法?
  4. 编辑:已解决。需要使用它:

    uglifyjs --mangle toplevel --screw-ie8 --mangle-props --mangle-regex="/^((?!\$\$).)*$/" --reserve-domprops --reserved-file reserved -- input > output
    

1 个答案:

答案 0 :(得分:0)

我使用这些参数运行UglifyJs v2.4.10

uglifyjs src.js --mangle toplevel --screw-ie8 --compress --reserve-domprops --mangle-regex="/(?s)^((?!$$).)*$/"

它转换了这个:

(function(lib){
    var xhr = new XHR({"year": 2015, "week": 6});
    xhr.run();
})(library);

到此:

!function(r){var e=new XHR({year:2015,week:6});e.run()}(library);

我无法让其他选项正常运作。

您使用的是哪个版本?