2013-07-19 3 views
1

У меня есть проект Yeoman, который использует grunt-contrib-uglify в его файлах Javascript. При запуске на библиотеку Selectvizr (вытянут в использовании Бауэр) результирующий файл выглядит следующим образом:Использование uglify grunt task messes up selectivizr

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

Я думаю, что это потому, что Selectivizr настроена на ничего не делать, если браузер не IE, так что, возможно, в Grunt контекст выполнения, он делает именно это?

Итак, я хочу знать, можно ли запустить Uglify на Selectivizr и создать что-то полезное?

+0

Selectivizr v1.0.3b, похоже, исправил эту проблему для меня. – Bitneko

ответ

2

Uglify обрабатывает JavaScript с единственной целью оптимизации. Его задача - сделать файл супер-маленьким любым возможным способом. Для этого он обнаруживает любые непеременные условия в коде, такие как if (true) { return; }. Поскольку true всегда истинно, функциональность этого условного интерпретируется и оптимизирована для.

Так что это не ошибка Uglify, так как она правильно выполнила свою работу. Я не знаком с трюком, который использует Selectivizr, но если он работает, он работает.

К сожалению, единственное решение, о котором я могу думать, не позволяет запустить Uglify в файле, а вместо этого скопировать его непосредственно на dist/.

0

Другим решением является комментарий/удалить строку 32 в selectivizr.js:

if (/*@[email protected]*/true) return; 

Это линия разрыва задачи уродовать/Concat. Запустите снова, и он будет работать.

Подробнее о Github

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

Пожалуйста, используйте код выше, чтобы решить эту проблему. У меня тоже такая же проблема, и она была исправлена ​​после обновления этой строки.