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.
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:
- Streams are not supported on
file.contents
by default. See how to add stream support. - Dirent extends Node's native fs.Dirent class.
- You can pass a string or object as the first argument, and optionally a file type as the second argument.
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
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' });