2016-07-16 33 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