我有一个 Yeoman 项目,它在其 Javascript 文件上使用grunt-contrib-uglify 。在 Selectvizr 库上运行时(使用 Bower 引入),生成的文件如下所示:
!function(win){return}(this);
我认为这是因为如果浏览器不是 IE,Selectivizr 设置为不执行任何操作,所以也许在 Grunt 执行上下文中它正在这样做?
所以我想知道是否有可能让 Uglify 在 Selectivizr 上运行并产生可用的东西?
我有一个 Yeoman 项目,它在其 Javascript 文件上使用grunt-contrib-uglify 。在 Selectvizr 库上运行时(使用 Bower 引入),生成的文件如下所示:
!function(win){return}(this);
我认为这是因为如果浏览器不是 IE,Selectivizr 设置为不执行任何操作,所以也许在 Grunt 执行上下文中它正在这样做?
所以我想知道是否有可能让 Uglify 在 Selectivizr 上运行并产生可用的东西?
Uglify 处理 JavaScript 的唯一目的是优化。它的工作是以任何可能的方式使文件超级小。为此,它会检测代码中的任何非可变条件,例如if (true) { return; }
. 由于true
始终为真,因此对该条件的功能进行了解释和优化。
所以,这不是一个 Uglify 错误,因为它正确地完成了它的工作。我不熟悉 Selectivizr 使用的技巧,但如果它有效,它就有效。
不幸的是,我能想到的唯一解决方案是不让 Uglify 在文件上运行,而是dist/
直接将其复制到。
另一种解决方案是注释/删除 selectivizr.js 中的第 32 行:
if (/*@cc_on!@*/true) return;
这是破坏 uglify/concat 任务的行。再次运行,它将起作用。
更多关于Github
var result = navigator.userAgent.match(/MSIE (\d+)/);
if (result) {
var ieVersion = result[1];
}
else {
return;
}
请使用上面的代码来解决这个问题。我也遇到了同样的问题,更新此行后已修复。