Gulp cheerio部分转义html元素

时间:2017-01-24 04:25:25

标签: javascript node.js gulp cheerio gulp-cheerio

创建了一个单独的最小示例存储库,说明了这里发生的事情(有关如何运行的说明,请参阅README.md):

https://github.com/oleersoy/nunjucks-cheerio/

正在呈现的文件是src/test.html。它包含:

{% for item in ['100', '300'] %}
  <div class="u-color-background-gray-{{item}}>
    <code>u-color-background-gray-{{item}}</code>
  </div>
{% endfor %}

渲染时,某些内容会被转义,即使gulp-cheerio操作应该是noop,因为它应该处理的内容不存在:

  <div class="u-color-background-gray-100&gt;
    &lt;code&gt;u-color-background-gray-100&lt;/code&gt;
  &lt;/div&gt;

  &lt;div class=" u-color-background-gray-300="">
    <code>u-color-background-gray-300</code>
  </div>

gulpfile.js看起来像这样:

    gulp.task('test', function() {
      return gulp
        .src("src/**")
        .pipe(nunjucksRender({
          path: ["src"]
        }))
        .pipe(cheerio(function($, file) {
          $('.Test-markup > code').each(function() {
            var markup = $(this).html();
            //Insert the Test-render block after the Test-then block
            //Append the markup block to the Test-render block
            $($(this).parent().next()).after(renderTestBlock).next().append(markup);
          });
        }))
        .pipe(gulp.dest("dist"));
    });

任何人都知道可能导致内容泄露的原因是什么?

作为参考,我还提出了cheeriogulp-cheerio

的问题

1 个答案:

答案 0 :(得分:0)

在模板字符串"

中缺少class="u-color-background-gray-{{item}}>