UglifyJS2 удаляет нужные комментарии в конце блока или файла
У меня есть необходимость сохранить некоторые конкретные комментарии в моем Uglified Javascript. Есть ли способ заставить параметр UglifyJS2 --comments оставить все нужные комментарии?
Пример foo.js:
function foo()
{
// don't keep this
/* delete this */
/* KEEPME */
for (var i=0; i < 10; i++)
{
alert('alert #'+i);
}
/* KEEPME */
}
/*KEEPME*/
Используя эту командную строку Uglifyjs2 (с uglifyjs2 версии 2.4.24):
node uglifyjs2 --comments "/KEEPME/i" -o foo.min.js foo.js
генерирует файл foo.min.js, содержащий:
function foo(){/* KEEPME */
for(var i=0;i<10;i++){alert("alert #"+i)}}
UglifyJs2, кажется, удаляет комментарии в конце файла или блока, даже если они соответствуют регулярному выражению, которое должно их сохранять. В документации Uglify говорится, что не все комментарии могут быть сохранены из-за различных параметров сжатия. Кажется, что комментарии в примере должны быть сохраняемыми. Отключение различных параметров сжатия по-прежнему удаляет эти комментарии.
Добавление других необходимых операторов кода в конец файла или конец блока приведет к сохранению комментариев.
Если бы я смог сохранить все мои разыскиваемые комментарии, это было бы здорово. Вместо этого я бы также решил удалить все // комментарии и просто оставить все /* комментарии */.
1 ответ
Смотрите https://github.com/mishoo/UglifyJS2/issues/88 поскольку это известная ошибка в uglifyjs. В своем текущем состоянии uglifyjs не может хранить комментарии в конце (под) дерева (для программистов: это означает конец файла, конец функции и тому подобное)
Примечание: у меня есть ответы со ссылками, удаленными только в stackru, хотя я чувствую, что такого рода проблемы должны быть решены там. Не стесняйтесь удалить этот ответ, если этот ответ не соответствует вашим требованиям.