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)
我可以想到两个解决方案:
将我所有模板中的 <
替换为 <
。手动这样做不会很有趣,但这就是生活。知道如何在 gulp 任务中做到这一点吗?
放弃这个插件,寻找一个可以解析和缩小我的模板的插件。有什么建议吗?
我想知道在构建部署方面更有经验的人(我是新手)会如何处理这个问题。
恐怕您必须将它们更改为 <
。 html-minifier
团队明确表示 they won't support bare <
s。
无论如何你都想这样做,既不使解析器出错,又防止某些 XSS 攻击。见
- When Should One Use HTML Entities,
- the W3C's recommendations,
- 和 OWASP 的 XSS prevention cheat sheet
了解更多信息。
好消息是任何文本编辑器值得其编码盐支持项目范围或至少多文件搜索和替换。假设您所有的 HTML <tags>
在 <
之后没有空格,您应该可以将“<”替换为“<”。
我决定将所有 <
替换为 <
,因为我认为这可能会在以后避免一些悲伤。此外@henry 在他的回答中提出了很好的观点。
虽然我太胆小了,但我不相信我的 IDE 可以在不以各种方式破坏我的代码的情况下进行查找和替换。相反,我遵循了以下步骤:
- 运行 gulp 来自 OP 的任务
- 注意抛出解析错误的文件并修复它
- 运行gulp再次任务
- 新文件抛出解析错误。去修复它
- ...
最终我修复了所有文件。
我正在尝试缩小我的 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)
我可以想到两个解决方案:
将我所有模板中的
<
替换为<
。手动这样做不会很有趣,但这就是生活。知道如何在 gulp 任务中做到这一点吗?放弃这个插件,寻找一个可以解析和缩小我的模板的插件。有什么建议吗?
我想知道在构建部署方面更有经验的人(我是新手)会如何处理这个问题。
恐怕您必须将它们更改为 <
。 html-minifier
团队明确表示 they won't support bare <
s。
无论如何你都想这样做,既不使解析器出错,又防止某些 XSS 攻击。见
- When Should One Use HTML Entities,
- the W3C's recommendations,
- 和 OWASP 的 XSS prevention cheat sheet
了解更多信息。
好消息是任何文本编辑器值得其编码盐支持项目范围或至少多文件搜索和替换。假设您所有的 HTML <tags>
在 <
之后没有空格,您应该可以将“<”替换为“<”。
我决定将所有 <
替换为 <
,因为我认为这可能会在以后避免一些悲伤。此外@henry 在他的回答中提出了很好的观点。
虽然我太胆小了,但我不相信我的 IDE 可以在不以各种方式破坏我的代码的情况下进行查找和替换。相反,我遵循了以下步骤:
- 运行 gulp 来自 OP 的任务
- 注意抛出解析错误的文件并修复它
- 运行gulp再次任务
- 新文件抛出解析错误。去修复它
- ...
最终我修复了所有文件。