与Gulp数据的拼接路径

时间:2017-03-24 22:42:58

标签: json gulp yaml-front-matter gulp-data

如何使用gulp-data获取父文件夹的名称?目前我正在使用以下内容:

在我的前面

---
title: 'some title'
----

来自我的gulp文件:

function fm2json() {
  return gulp.src('src/pages/**/*.html')
    .pipe(require('gulp-gray-matter')())
    .pipe($.data(function(file){
      file.data.relative = file.relative,
      file.data.basename = file.basename,
    }))
    .pipe($.pluck('data', 'new.json'))
    .pipe($.data(function(file){
      file.contents = new Buffer(JSON.stringify(file.data))
    }))
    .pipe(require('gulp-json-format')(2))
    .pipe(gulp.dest('src/data'));
}

将以下内容输出到new.json

[
  {
    "title":"some title" 
    "relative":"lesson01\\file.html" 
    "basename":"file.html" 
  },
  {
    "title":"some title 2" 
    "relative":"lesson02\\file2.html" 
    "basename":"file2.html" 
  }
]

我无法弄清楚如何获取文件的父文件夹,以便relative"relative":"lesson01""relative":"lesson02"

1 个答案:

答案 0 :(得分:0)

这不是最有效的方法。如果它对任何人有帮助,那就是我最终的目标。

function fm2json() {
  return gulp.src('src/pages/**/*.html')
    .pipe(require('gulp-gray-matter')())
    .pipe($.data(function(file){

        // What I ended up with
        var relpath = file.relative;
        var path    = relpath.replace(/\\/g,"/"); //flip slashes
        var split   = path.split('/'); //split the path into an array
        var parent  = split[split.length - 2]; // find the array position

        file.data.parent = parent,
        file.data.file   = file.basename,
        file.data.path   = path,

    }))
    .pipe($.pluck('data', 'new.json'))
    .pipe($.data(function(file){
      file.contents = new Buffer(JSON.stringify(file.data))
    }))
    .pipe(require('gulp-json-format')(2))
    .pipe(gulp.dest('src/data'));
}