希望从大量 javascript 文件中删除评论

Posted

技术标签:

【中文标题】希望从大量 javascript 文件中删除评论【英文标题】:Looking to remove comments from a large amount of javascript files 【发布时间】:2012-05-11 07:10:08 【问题描述】:

这是我的困境:

我是 javascript 的菜鸟(目前正在实习并帮助维护两个电子商务网站)。我最近被指派删除我们的 javascript 库中出现的所有 cmets(超过 25,000 个 cmets!)。显然我想找到一个函数或一些预先存在的程序可以解析代码,删除 // 或 */... 之后的所有字符...

我研究了一些在线可用的缩小器,例如 Yui、jscompressor.com 和 uglifyJS,它们可以使这项任务更加自动化,但也存在一些问题。要么它们过于激进(缩短变量名、删除所有空格等),要么它们要求您一次输入一行或一个文件。我正在处理数以千计的 .js 文件。

补充细节:我们的开发环境是Eclipse IDE和xammp;语言有htmlphp、css。

任何可以满足我需求的程序建议都会很棒!

【问题讨论】:

为什么要删除 cmets 但不缩小? 嗯。是否可以为行尾编写一个 reg ex 脚本。 PERL 肯定可以做到这一点(我认为)。 jscompress.com 应该为你做这件事.. js 和 css 都有很多其他的在线压缩工具。使用缩进和 cmets 保留原始文件并缩小将要投入生产的文件是一种很好的做法。 文件的数量并不重要;简单的脚本可以解决这个问题。 YUI 似乎有一个 --nomunge 选项来禁用混淆。 github.com/yui/yuicompressor/blob/master/doc/README 他们也有--disable-optimizations 以避免其他代码更改。结果仍然会被缩小,但也许你可以通过jsbeautifier.org 运行结果来恢复你的缩进。 【参考方案1】:

事实上,构建一个从 javascript 文档中删除所有 cmets 的正则表达式并不容易。

基本解决方案是使用:

     yourJavascriptString.replace(/\/\*.+?\*\/|\/\/.*(?=[\n\r])/g, '');

不幸的是,它并不总是有效。如果您需要更完整的解决方案,请访问此网站:http://james.padolsey.com/javascript/removing-comments-in-javascript/

【讨论】:

【参考方案2】:

仔细看看 uglifyjs。默认情况下它既不压缩也不压缩(您必须分别提供 -c 和 -m 选项),并且您可以详细选择它执行的压缩类型,甚至可以指定正则表达式的级别cmets 删除。而且,如果您愿意的话,您甚至可以在外出时进行漂亮的打印。那么使用它有什么问题呢?

【讨论】:

【参考方案3】:

我知道这个问题已经有几年的历史了 - 但我发现的所有 Javascript 评论剥离器都无法处理我试图剥离的 2.6mb Javascript 文件。

我使用以下代码创建了一个 jsfiddle,然后将 2.6mb 文件粘贴到文本框中,它对我有用:

$("textarea").val($("textarea").val().replace(/\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\//g,"")); /*remove these comment types*/

$("textarea").val($("textarea").val().replace(/\/\/.*/g,"")); // remove these comment types

https://jsfiddle.net/40okonqo/

希望对某人有所帮助。

致谢:我使用此处找到的信息来帮助处理正则表达式:http://blog.ostermiller.org/find-comment

【讨论】:

以上是关于希望从大量 javascript 文件中删除评论的主要内容,如果未能解决你的问题,请参考以下文章

javascript nuxt.config.js文件的示例在nuxt和vue-meta文档示例中进行了大量评论

YUI 删除 javascript 评论

如何从 Android Studio 中的特定文件中删除所有评论? [复制]

从drupal网站删除谷歌分析

如何快速删除 WordPress 外贸网站后台的垃圾评论

JavaScript实现评论点赞功能