grunt contrib htmlmin如何忽略模板标记
grunt-contrib-htmlmin how to ignore template tags
当我在任何具有<%=myvar%>,则任务输出一个解析错误。有没有一种方法可以忽略<%=内的文本和%>?
由于发布了此问题,html-minifier
(由grunt-contrib-htmlmin
使用)中引入了一个新功能,以忽略导致问题的插值标记。
例如,以下html部分:
<div>
<span><%= variable %></span>
</div>
现在将缩小为:
<div><span><%= variable %></span></div>
在更改之前,它会导致一个错误。
你可以使用网站上的演示来测试它。如果有效,您可以更新项目以使用新版本。
此问题是旧问题,但grunt-contrib-htmlmin
和html-minifier
可以采用新选项。
正如@mckramar已经提到的,grunt-contrib-htmlmin
位于html-minifier
之上,因此您可以添加其他选项:
customAttrAssign:<value>
允许支持自定义属性分配表达式的正则表达式数组
customAttrSurround:<value>
允许支持自定义属性环绕表达式的正则表达式数组
解决方案
咕哝配置示例(用于双支架{{ }}
):
var hbAttrWrapOpen = /'{'{(#|'^)[^}]+'}'}/;
var hbAttrWrapClose = /'{'{'/[^}]+'}'}/;
var hbAttrWrapPair = [hbAttrWrapOpen, hbAttrWrapClose];
htmlmin: {
blabla: {
options: {
...
customAttrSurround: [hbAttrWrapPair]
},
files: [
...
]
}
}
根据文件,这些是唯一的限制:
请注意,这些表达式用于解析单个属性+值对,因此单个Handlebars表达式可能不会跨越多个属性。例如,以下标记将不是已识别:
<img src="logo.svg" {{#if logo_title}}alt="{{logo_title}}" title="{{logo_title}}"{{/if}} />
相反,每个属性必须单独包装:
<img src="logo.svg" {{#if logo_title}}alt="{{logo_title}}"{{/if}} {{#if logo_title}}title="{{logo_title}}"{{/if}} />
就是这样,只要你关注你的标记,它就会毫无问题地工作。
相同的解决方法,除了使用针对Jekyll标签的regexp:
var jekyllConditionalWrapOpen = /'{'% if[^}]+'%'}/;
var jekyllConditionalWrapClose = /'{'%[^}]+endif '%'}/;
var jekyllConditionalWrapPair = [jekyllConditionalWrapOpen, jekyllConditionalWrapClose];
相关文章:
- 我如何找到一个句子中的所有空格并替换忽略它们
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 为什么忽略了eval()代码中的语法错误
- jQuery.when()在循环中被忽略
- 调用后不异步Ajax忽略函数
- 替换模式忽略模式中的字符
- MVC正在忽略我的Javascript文件
- 单击其他元素时,我如何使用 jQuery 忽略更改事件
- 自定义调查页面并希望在时区内按时间忽略(可能)
- “createImageData()”和“new ImageData(()”有何不同
- e.preventDefault在表单提交时被忽略
- Regex&Javascript:忽略wxyz.jpg之前的任何内容
- javascript/regex忽略双引号中的分号
- 添加一个setTimeout方法会使jQuery悬停方法忽略setTimeout方法中的函数
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- 如何在html画布上替换ByImage()而不是drawImage()(忽略不透明度)
- 有没有一个函数会忽略javascript中的大写字母
- 如何在提交表单时忽略ajax中的验证规则和消息
- grunt contrib htmlmin如何忽略模板标记
- grunt-contrib-connect 忽略任务选项