gft

gulp-file-tree

A gulp plugin for amalgamating a stream of files into a file tree

Showing:

Popularity

Downloads/wk

7

GitHub Stars

3

Maintenance

Last Commit

5yrs ago

Contributors

0

Package

Dependencies

4

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

gulp-file-tree Build Status Coverage Status

A gulp plugin for amalgamating a stream of files into a file tree.

Install

$ npm install --save-dev gulp-file-tree

Usage

var gulp = require('gulp'),
    gft = require('gulp-file-tree');

gulp.task('default', function () {
    return gulp.src('src/pages/*.html')
        .pipe(gft())
        .pipe(gulp.dest('./'));
});

The default created tree (saved as 'tree.json') would look like this:

{
    "cwd": "/Users/you/project",
    "base": "/Users/you/project/src/",
    "path": "/Users/you/project/src/pages",
    "relative": "pages",
    "name": "pages",
    "isFile": false,
    "isDirectory": true,
    "children": [
        {
            "cwd": "/Users/you/project",
            "base": "/Users/you/project/src/",
            "path": "/Users/you/project/src/pages/one.html",
            "relative": "pages/one.html",
            "name": "one.html",
            "isFile": true,
            "isDirectory": false,
            "children": []
        },
        {
            "cwd": "/Users/you/project",
            "base": "/Users/you/project/src/",
            "path": "/Users/you/project/src/pages/three",
            "relative": "pages/three",
            "name": "three",
            "isFile": false,
            "isDirectory": true,
            "children": [
                {
                    "cwd": "/Users/you/project",
                    "base": "/Users/you/project/src/",
                    "path": "/Users/you/project/src/pages/three/five.html",
                    "relative": "pages/three/five.html",
                    "name": "five.html",
                    "isFile": true,
                    "isDirectory": false,
                    "children": []
                },
                {
                    "cwd": "/Users/you/project",
                    "base": "/Users/you/project/src/",
                    "path": "/Users/you/project/src/pages/three/four.html",
                    "relative": "pages/three/four.html",
                    "name": "four.html",
                    "isFile": true,
                    "isDirectory": false,
                    "children": []
                }
            ]
        },
        {
            "cwd": "/Users/you/project",
            "base": "/Users/you/project/src/",
            "path": "/Users/you/project/src/pages/two.html",
            "relative": "pages/two.html",
            "name": "two.html",
            "isFile": true,
            "isDirectory": false,
            "children": []
        }
    ]
}

for the following file structure at /Users/you/project:

* src/
  * pages/
    * one.html
    * two.html
    * three/
      * four.html
      * five.html

API

gulp-file-tree(options)

options.emitTree (default: true)

Type: Boolean|String

Determines whether a json file containing the tree structure should be emitted.
If a String is passed in the resulting file will be output under that name + '.json'.
Any other truthy value will result in the file being output under the default tree.json filename.

options.emitFiles (default: false)

Type: Boolean

Determines whether files passed in are also emitted with an added property tree containing the generated file tree.

options.transform (default: null)

Type: Function

A function that can be passed in to perform a custom transform on a clone of the generated file tree which is provided as the first argument.

If emitFiles is true the function will recieve a second argument, the file itself, which can be used within the transform process. This allows for per-file tree-transforms which are could be used, for instance, to create page-based static-site navigation.

Forestry

The plugin uses the forestry library for modelling and building up the tree and it is a structure of forestry nodes that you have access to

  • on each emitted file, in the instance you set emitFiles to true and do not pass a transform function
  • or via the first argument of a passed in transform function.

For more information on the functionality provided please see the forestry documentation.

License

MIT © Iain McDonald

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial