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, хотя я чувствую, что такого рода проблемы должны быть решены там. Не стесняйтесь удалить этот ответ, если этот ответ не соответствует вашим требованиям.

Другие вопросы по тегам