Browserify/Stringify 剥离挖空评论绑定

Browserify/Stringify strips Knockout Comment Binding

我将 Knockout 和 Browserify 与 Stringify 结合使用。我在注释中有一些 Knockout 绑定,以促进组件中迭代 [1] 内的自定义 header。 Stringify 去掉了 Knockout 需要的注释;是否有忽略文件中的评论或忽略特定类型评论的解决方案?

[1] - http://knockoutjs.com/documentation/foreach-binding.html (注4)

如果您正在使用 Browserify,您应该使用 Gulp。在您的 Stringify 转换选项中,您应该指定一个自定义的 minifyOptions 对象。有一个名为 ignoreCustomComments 的选项,您可以在其中指定要从删除中排除的正则表达式数组。

browserify({
    entries: 'index.js', extensions: ['.js'], watch: config.watching
  })
    .transform(babelify, {presets: ['es2015']})
    .transform(stringify, {
      appliesTo: {includeExtensions: ['.html']},
      minify: true,
      minifyOptions: {
        ignoreCustomComments: [/^(\s*ko)/, /^(\s*\/ko)/]
      }
    })

[/^(\s*ko)/, /^(\s*\/ko)/] 将保留所有带有空格的注释,然后是 'ko' 或 '/ko' 注释绑定。但是,通过将 minifyOptions 设置为新对象,所有默认值将被覆盖为 undefined;因此,您现在需要指定这些。这些可以找到 here

用法:

<!-- Will be removed -->

<!-- ko if: true -->
<h4>This will be shown</h4>
<!-- /ko -->

<!-- ko if: false -->
<h4>This will NOT be shown</h4>
<!-- /ko -->