HTML-Minifier 删除元素属性之间的空格
HTML-Minifier removes the spaces between element's attributes
我已经在我的 html 代码上实施了 html-minifier 来缩小生产环境的 html。在这里,我观察到当我的代码被缩小时,属性之间的 spaces 也被删除。下面是我的原始 HTML 片段和缩小的片段:
原始HTML片段
<!DOCTYPE html>
<html lang="en">
<head>
<title>ABS Website</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
<meta name="robots" content="index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,user-scalable=no" />
<meta name="description" content="Somedescriptions"
/>
<!-- Bootstrap links -->
<link rel="stylesheet" href="common/styles/bootstrap/bootstrap.min.css">
缩小的HTML片段
<!DOCTYPE html><html lang=en><title>ABS Website</title><meta charset=utf-8><meta content="IE=edge, chrome=1"http-equiv=X-UA-Compatible><meta content="index, follow"name=robots><meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"name=viewport><meta content="somedescription"name=description><link href=common/styles/bootstrap/bootstrap.min.css rel=stylesheet>
以上是我使用 html-minifier 缩小的许多 html 文件的片段之一,为了进行此缩小,我正在使用 gulp 包 "gulp-htmlmin": "^4.0.0"
下面是我在 .pipe 中标记的要执行 html 缩小的功能:
gulp.task('copy-welcome-page', function () {
gulp.src(['./index.html', './privacy-policy.html', './pagenotfound.html', './google8dd2827589fa9627.html', './terms-conditions.html'], { "base": "." })
.pipe(htmlmin({
collapseWhitespace: true,
removeComments: true,
collapseBooleanAttributes: true,
collapseWhitespace: true,
decodeEntities: true,
minifyCSS: true,
minifyJS: true,
processConditionalComments: true,
removeAttributeQuotes: true,
removeComments: true,
removeEmptyAttributes: true,
removeOptionalTags: true,
removeRedundantAttributes: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributes: true,
removeTagWhitespace: true,
sortAttributes: true,
sortClassName: true,
trimCustomFragments: true,
useShortDoctype: true
}))
.pipe(gzip({ gzipOptions: { level: 9 }, append: false }))
.pipe(gulp.dest('build/'));
});
如何解决删除属性之间 space 的问题?
我的预期输出是得到缩小的 html 而没有从元素属性的中间移除 spaces。
我为什么要这个?
我想要这个是因为 w3 的 html 验证器向我抛出错误,如屏幕截图所示,这都是关于属性之间缺少 space:
removeTagWhitespace
选项似乎是导致此问题的原因,请参阅 github 上的此问题:https://github.com/kangax/html-minifier/issues/570
将其设置为 false
应该可以防止这种情况发生。 (它可能会留下比预期更多的空白,这取决于您输入的内容 HTML;但这仍然比使整个文档无效更好。)
我已经在我的 html 代码上实施了 html-minifier 来缩小生产环境的 html。在这里,我观察到当我的代码被缩小时,属性之间的 spaces 也被删除。下面是我的原始 HTML 片段和缩小的片段:
原始HTML片段
<!DOCTYPE html>
<html lang="en">
<head>
<title>ABS Website</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
<meta name="robots" content="index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,user-scalable=no" />
<meta name="description" content="Somedescriptions"
/>
<!-- Bootstrap links -->
<link rel="stylesheet" href="common/styles/bootstrap/bootstrap.min.css">
缩小的HTML片段
<!DOCTYPE html><html lang=en><title>ABS Website</title><meta charset=utf-8><meta content="IE=edge, chrome=1"http-equiv=X-UA-Compatible><meta content="index, follow"name=robots><meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"name=viewport><meta content="somedescription"name=description><link href=common/styles/bootstrap/bootstrap.min.css rel=stylesheet>
以上是我使用 html-minifier 缩小的许多 html 文件的片段之一,为了进行此缩小,我正在使用 gulp 包 "gulp-htmlmin": "^4.0.0" 下面是我在 .pipe 中标记的要执行 html 缩小的功能:
gulp.task('copy-welcome-page', function () {
gulp.src(['./index.html', './privacy-policy.html', './pagenotfound.html', './google8dd2827589fa9627.html', './terms-conditions.html'], { "base": "." })
.pipe(htmlmin({
collapseWhitespace: true,
removeComments: true,
collapseBooleanAttributes: true,
collapseWhitespace: true,
decodeEntities: true,
minifyCSS: true,
minifyJS: true,
processConditionalComments: true,
removeAttributeQuotes: true,
removeComments: true,
removeEmptyAttributes: true,
removeOptionalTags: true,
removeRedundantAttributes: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributes: true,
removeTagWhitespace: true,
sortAttributes: true,
sortClassName: true,
trimCustomFragments: true,
useShortDoctype: true
}))
.pipe(gzip({ gzipOptions: { level: 9 }, append: false }))
.pipe(gulp.dest('build/'));
});
如何解决删除属性之间 space 的问题?
我的预期输出是得到缩小的 html 而没有从元素属性的中间移除 spaces。
我为什么要这个? 我想要这个是因为 w3 的 html 验证器向我抛出错误,如屏幕截图所示,这都是关于属性之间缺少 space:
removeTagWhitespace
选项似乎是导致此问题的原因,请参阅 github 上的此问题:https://github.com/kangax/html-minifier/issues/570
将其设置为 false
应该可以防止这种情况发生。 (它可能会留下比预期更多的空白,这取决于您输入的内容 HTML;但这仍然比使整个文档无效更好。)