使用uglify grunt任务搞砸了selectivizr

时间:2013-07-19 10:42:29

标签: gruntjs yeoman uglifyjs selectivizr

我有一个Yeoman项目,在其Javascript文件上使用grunt-contrib-uglify。当在Selectvizr库上运行时(使用Bower引入),生成的文件如下所示:

!function(win){return}(this);

我认为这是因为如果浏览器不是IE,Selectivizr会设置为什么都不做,所以也许在Grunt执行环境中它正在做那个?

所以我想知道是否可以在Selectivizr上运行Uglify并生成可用的东西?

3 个答案:

答案 0 :(得分:2)

Uglify处理JavaScript仅用于优化。它的工作是以任何可能的方式使文件超小。为此,它会检测代码中的任何非变量条件,例如if (true) { return; }。由于true始终为true,因此此条件的功能将被解释,并针对。

进行优化

所以,它不是一个Uglify错误,因为它正确地完成了它的工作。我不熟悉Selectivizr正在使用的技巧,但如果它有效,它就可以工作。

不幸的是,我能想到的唯一解决办法就是不让Uglify在该文件上运行,而是将其直接复制到dist/

答案 1 :(得分:1)

var result = navigator.userAgent.match(/MSIE (\d+)/);
if (result) {
  var ieVersion = result[1];
}
else {
  return;
}

请使用上面的代码来解决此问题。我也遇到了同样的问题,在更新这一行后它已被修复。

答案 2 :(得分:0)

另一个解决方案是评论/删除selectivizr.js中的第32行

if (/*@cc_on!@*/true) return;

这是打破uglify / concat任务的行。再次运行它会起作用。

更多关于Github