gulp-htmlmin 在有效文档上失败:解决方法还是放弃插件?

gulp-htmlmin fails on valid document: workaround or abandon plugin?

我正在尝试缩小我的 HTML。我刚刚发现并开始使用 the gulp-htmlmin plugin

我的 gulp 任务...

gulp.task('build-html',function(){
    return gulp.src(appDev+'test.html')
        .pipe(htmlmin({collapseWhitespace: true}))
        .pipe(gulp.dest(appProd));
});

应用于此有效 HTML 或具有 < 字符的任何文档时失败:

<div> < back </div>

错误是:

Error: Parse Error: < back </div>
    at new HTMLParser (html-minifier\src\htmlparser.js:236:13)

我可以想到两个解决方案:

我想知道在构建部署方面更有经验的人(我是新手)会如何处理这个问题。

恐怕您必须将它们更改为 &lt;html-minifier 团队明确表示 they won't support bare <s

无论如何你都想这样做,既不使解析器出错,又防止某些 XSS 攻击。见

了解更多信息。

好消息是任何文本编辑器值得其编码盐支持项目范围或至少多文件搜索和替换。假设您所有的 HTML <tags>< 之后没有空格,您应该可以将“<”替换为“<”。

我决定将所有 < 替换为 &lt;,因为我认为这可能会在以后避免一些悲伤。此外@henry 在他的回答中提出了很好的观点。

虽然我太胆小了,但我不相信我的 IDE 可以在不以各种方式破坏我的代码的情况下进行查找和替换。相反,我遵循了以下步骤:

  1. 运行 gulp 来自 OP 的任务
  2. 注意抛出解析错误的文件并修复它
  3. 运行gulp再次任务
  4. 新文件抛出解析错误。去修复它
  5. ...

最终我修复了所有文件。