2016-07-16 34 views
0

属性中删除JSON或降价文件,我有降价文件的结构如下所示:我需要从乙烯流使用一饮而尽基于文件

--- 
title: some title 
tags: [misc] 
date: '2015-09-09' 
--- 

some text 

我有一个大口的任务类似如下

gulp.task('hits', function(){ 
    var index = 0; 
    gulp.src('source/content/agents/*.md') 
    //.pipe(changed()) 
    .pipe(markdown({ 
     pedantic: true, 
     smartypants: true 
    })) 
    .pipe(buffer()) 
    .pipe(jeditor(function(json) { 
    return json; // must return JSON object. 
    })) 
    .pipe(gulp.dest('server/content/hits')); 
}); 

中输入文件没有标签阵列我想从流中删除它在创出值的情况。这可以在json步骤之前或之后完成,我猜之前会是最好的,但任何一个都可以。

我敢肯定,这一定是做给你知道正确的插件以及如何使用该插件一件简单的事情。

回答

0

你在这里你降价文件的开头的不是JSON的。一个适当的JSON文件应该是这样的:

{ 
    "title": "some title", 
    "tags": ["misc"], 
    "date": "2015-09-09" 
} 

什么你在这里处理是YAML。更具体地说,本类型YAML数据,这在降价文档的开头作为元数据,被称为Front Matter和由Jekyll静态站点发生器普及。

有一个称为gulp-front-matter是专门用来对付这种元数据的一饮而尽插件。它解析前面的问题并将结果值附加到乙烯基文件中。

这与gulp-filter插件相结合,可以基于存在于前事标签的流过滤掉的文件:

var gulp = require('gulp'); 
var frontMatter = require('gulp-front-matter'); 
var markdown = require('gulp-markdown'); 
var filter = require('gulp-filter'); 

gulp.task('hits', function() { 
    return gulp.src('source/content/agents/*.md') 
    .pipe(frontMatter()) 
    .pipe(markdown()) 
    .pipe(filter(function(file) { 
     return file.frontMatter.tags && 
      file.frontMatter.tags.indexOf('hit') >= 0; 
    })) 
    .pipe(gulp.dest('server/content/hits')) 
}); 
+0

我并没有说这是JSON,我说我具有该结构的降价文件,我把它们变成json。降级步骤之后,所以我期待过滤markdown或json的步骤,但谢谢我会尝试吞噬过滤器。 – user254694