如何使用grunt-contrib-htmlmin删除一些特定于敲门的评论?

时间:2014-03-20 20:57:12

标签: html knockout.js gruntjs minify grunt-contrib-htmlmin

我正在尝试使用grunt-contrib-html来缩小我的HTML。唯一的问题是我使用containerless control flow syntax敲击,这只是html评论,但它们对于淘汰非常重要:

<ul>
    <li>This item always appears</li>
    <!-- ko if: someExpressionGoesHere -->
        <li>I want to make this item present/absent dynamically</li>
    <!-- /ko -->
</ul>

<!-- ko foreach: myItems -->
    <li>Item <span data-bind="text: $data"></span></li>
<!-- /ko -->

所以当我使用minifier时有以下选项:

options: {
   removeComments: true,
   collapseWhitespace: true
}

应用程序在缩小后不起作用(不出意外,它会删除<!-- ko comments)。删除removeComments可以解决问题,但是我的html有很多评论,其中只有少数是特定的淘汰赛。此外,所有的淘汰评论都很容易辨认:他们在开始时<!-- ko,最后<!-- /ko -->

寻找潜在的html minifier options - 没有像&#34;处理正确的淘汰评论&#34;。

那么有没有办法解决我的问题:缩小html删除评论,但留下特定的评论?

1 个答案:

答案 0 :(得分:7)

所以...现在通过ignoreCustomComments选项实现。

这是我们测试套件的片段:

var input = '<!-- ko if: someExpressionGoesHere --><li>test</li><!-- /ko -->';

equal(minify(input, {
  removeComments: true,
  // ignore knockout comments
  ignoreCustomComments: [
    /^\s+ko/,
    /\/ko\s+$/
  ]
}), input);