UglifyJS2在块或文件末尾删除想要的注释

时间:2015-09-15 17:33:47

标签: javascript comments 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 个答案:

答案 0 :(得分:1)

请参阅https://github.com/mishoo/UglifyJS2/issues/88,因为这是uglifyjs中的已知错误。在当前状态下,uglifyjs不能在(子)树的末尾保留注释(对于程序员:这意味着文件结束,功能结束和那种东西)

注意:我已经得到了只在stackoverflow上删除链接的答案,尽管我觉得这些问题应该在那里解决。如果此答案不符合您的要求,请随时删除此答案。