希望从大量 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;语言有html、php、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文档示例中进行了大量评论