Browserify / Stringify strip Knockout Comment Binding

时间:2016-10-31 16:15:18

标签: javascript knockout.js stringify

我使用Knockout和Browserify使用Stringify。我在注释中有一些Knockout绑定,以便在组件中的迭代[1]内部实现自定义标头。 Stringify删除了Knockout所需的注释;是否存在忽略文件中的注释或忽略特定类型的注释的解决方案?

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

1 个答案:

答案 0 :(得分: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 -->