正则表达式:如何在不丢失某些标签格式的情况下丑化 HTML

Regex: how to uglify HTML without losing formatting in certain tags

我正在用 Haxe 构建一个静态站点生成器。将所有内容设为静态的好处是您可以随心所欲地输出 html。我已经使用正则表达式从输出 html 中去除了模板中的注释。

但是我想知道如何在同一过程中缩小 html。我在 tab/newlines 个字符上做了一个简单的 split/join,但我很快发现这对 pre/code 和脚本标签中的内容不起作用。

如何在不丢失 pre/code/script 标签内的格式的情况下删除换行符和制表符?

注意;我不介意用与 Haxe 不同的编码语言获得答案。

How can I remove newlines and tabs without losing formatting inside pre/code/script tags?

您不能在不影响格式的情况下删除格式(新行)。这就是 pre 和代码的全部意义所在。你必须保留它们。

如果您想避免它们在这些标签中被删除,您将必须编写一个完整的 HTML-解析器来理解标签何时打开或关闭。或者使用现有的 uglifyer。

一个简单(可能不完整)的方法是 new XMLSerializer().serializeToString(dom) 首先删除 DOM-Elements

之间的新行

可以使用这个正则表达式

Minifying final HTML output using regular expressions with CodeIgniter