gulp-vartree

Create a variable tree from the property values of given files.

gulp-vartree

Create a variable tree with the files that are passed in with Gulp.

First, install gulp-vartree as a development dependency:

npm install --save-dev gulp-vartree

Then, add it to your gulpfile.js:

var mdvars = require('gulp-mdvars');
var vartree = require('gulp-vartree');
var root = {};
 
gulp.task('vartree', function() {
  gulp.src(['assets/contents/*.md'])
    .pipe(mdvars({
      prop: 'meta' // will put metadata in the file.meta property 
    }))
    .pipe(vartree({
      root: root, // the root in which the vartree will be put 
      prop: 'metas', // metadata property to collect 
      parent: 'parent' // keep a ref to the parent scope in the file.parent property 
    }))
    .pipe(marked()) // Do whatever you want with the files later 
    .pipe(gulp.dest('www/')).on('end', function() {
      console.log(root);
    });
});

The created variable tree looks like this:

{
  "title":"index",
  "childs":[
    {"title":"file1"},
    {"title":"file2"},
    {
      "name": "test",
      "title":"test-index",
      "childs":[
        {"title":"test-file1"},
        {"title":"test-file2"}
      ]
    }
  ]
}

for the following directory structure :

  • index.md
  • file1.md
  • file2.md
  • test/
    • index.md
    • file1.md
    • file2.md

gulp-vartree can be used with gulp-mdvars, or with any Gulp plugin that places data in a file property, such as gulp-frontmatter.

Type: Object

An object used as the root of the collected tree.

Type: String Default value: 'metas'

Indicates which property metadata will be collected from.

Type: String

The base directory where you want the tree to begin.

Type: String

Indicates the name of the property in which you want to keep a reference to the parent scope. This property is not populated per default, because using it will make the tree structure circular (and this interferes with e.g. serialization).

Type: String Default value: 'childs'

Indicates which property children will be pushed to.

Type: String Default value: 'path'

Indicates which property shall contain the file path.

Type: String Default value: 'name'

Indicates which property shall contain the file name.

Type: String Default value: 'ext'

Indicates which property shall contain the file extension.

Type: String Default value: 'href'

Indicates which property shall contain the file href.

Type: String Default: Value: 'folder'

This property will be used to indicate nodes that are directories.

Type: String Default value: undefined

If sorting is desired, the metadata property to sort the tree by.

Type: Boolean Default value: false

If true, the tree will be sorted in descending order instead of ascending order.

Type: String Default value: 'end'

For stream mode only. Indicates which event must be listened for to be sure that the vars are populated into the files in order to keep them.