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

时间:2016-09-10 01:23:00

标签: html gulp minify

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

我的大口任务......

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;。手动这样做不会很有趣,但这就是生活。知道如何在gulp任务中做到这一点吗?

  • 抛弃此插件以搜索可以解析和缩小模板的插件。有什么建议吗?

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

2 个答案:

答案 0 :(得分:1)

我担心你不得不将它们改为&lt;html-minifier小组已明确指出they won't support bare <s

无论如何,您都希望这样做,既不会破坏解析器并防止某些XSS攻击。参见

了解更多信息。

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

答案 1 :(得分:0)

我决定用android:scaleType替换所有<因为我认为这可能会让我感到悲伤。除了@henry在他的回答中提出了很好的观点。

虽然相信我的IDE能够在不破坏我的代码的情况下进行查找和替换,但我的鸡太大了。相反,我遵循了以下步骤:

  1. 从OP
  2. 运行gulp任务
  3. 注意抛出解析错误并修复它的文件
  4. 再次运行gulp任务
  5. 新文件会抛出解析错误。去解决它
  6. ...
  7. 最终我修复了所有文件。