Skip to content

Latest commit

 

History

History
51 lines (34 loc) · 1.87 KB

.verb.md

File metadata and controls

51 lines (34 loc) · 1.87 KB

Credit

This library is very heavily based on Vinyl. Thank you to the gulp.js team for the inspiration and great ideas behind vinyl. This work is based on that.

Comparison to Vinyl

The API for path handling is close enough that you can use Vinyl's docs as a reference. There are only a couple of minor differences:

  1. Streams are not supported on file.contents by default. See how to add stream support.
  2. Dirent extends Node's native fs.Dirent class.
  3. You can pass a string or object as the first argument, and optionally a file type as the second argument.

Usage

const Dirent = require('{%= name %}');

// Pass a file path as a string, or an object with properties to add to the dirent
// The following examples are equivalent. When the path is a string, it will
// be converted to an object and set on the dirent.path property.
console.log(new Dirent('some/file/path.txt'));
//=> <Dirent "some/file/path.txt">
console.log(new Dirent({ path: 'some/file/path.txt' }));
//=> <Dirent "some/file/path.txt">

// assuming __filename is /jonschlinkert/dev/dirent/index.js
const file = new Dirent(__filename);
console.log(file.dirname); //=> /Users/jonschlinkert/dev//dirent
console.log(file.basename); //=> example.js
console.log(file.stem); //=> example
console.log(file.extname); //=> .js

How to add stream support

Stream support is added using the [cloneable-readable][] library (this is the same library used by Vinyl). To add support for streams, do the following:

const clonable = require('cloneable-readable');
const Dirent = require('dirent');
const File = Dirent.create(cloneable);

const file = new File({ path: 'foo.js' });