2

我需要在我丑陋的 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 文档指出,由于各种压缩选项,并非所有评论都可以保留。似乎示例中的注释应该是可以保留的。禁用各种压缩选项似乎仍然会删除这些评论。

在文件末尾或块末尾添加其他必要的代码语句将导致注释被保留。

如果我能让它保留所有我想要的评论,那就太好了。相反,我也会选择一种方法来删除所有//评论并保留所有/*评论*/。

4

1 回答 1

1

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

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

于 2015-09-15T23:30:30.520 回答