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

Posted

技术标签:

【中文标题】UglifyJS2 删除块或文件末尾的想要的注释【英文标题】:UglifyJS2 removes wanted comments at the end of a block or file 【发布时间】:2015-12-12 01:51:17 【问题描述】:

我需要在我丑陋的 javascript 中保留一些特定的 cmets。有没有办法让 UglifyJS2 --cmets 参数保留所有想要的 cmets?

示例 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 似乎删除了文件末尾的 cmets 或块,即使它们符合应该保留它们的正则表达式。 Uglify 文档指出,由于各种压缩选项,并非所有 cmets 都可以保留。似乎示例中的 cmets 应该是可保留的。禁用各种压缩选项似乎仍然会删除这些 cmets。

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

如果我能用它来保存所有我想要的 cmets,那就太好了。我也愿意找到一种方法来删除所有//cmets,只保留所有/* cmets */。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于UglifyJS2 删除块或文件末尾的想要的注释的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式从 C# 中删除行注释

如何防止VSCode自动格式删除json文件末尾的新行?

Vim命令整理

U盘删除的文件恢复后打不开怎么办

python文件读写

linux运维快捷键