pvc-file

0.0.3 • Public • Published

pvc-file

Circle CI

In the spirit of pvc, a set of Node.js utilities to deal with the file as a stream.

To install:

npm install pvc-file

To include:

var pvcf = require('pvc-file');

Walk a directory

When a stream writes a path to pvcf.walker, it walks down the directory tree, pushing a stats object augmented by the name and path of the file. It walks directory by directory, so it can walk an infinite directory tree, descending only as fast as the output allows.

var walker = pvcf.walker()
walker.write('mydir');
walker.on('data', function (data) {
  console.log(data);
});
// {name: 'file1', path: 'mydir/file1', ... }
// {name: 'file2', path: 'mydir/file2', ... }
// {name: 'dir1', path: 'mydir/dir1', ... }
// {name: 'file3', path: 'mydir/dir1/file3', ... }
// ...

Convert files to streams

When a stream writes a file path to pvcf.fileStreamer, it opens a Readable file stream, pushing the chunks down the pipe. It will only open the next file stream if it has exhausted the current file stream, which makes it very memory efficient.

var streamer = pvcf.fileStreamer()
streamer.write('file1');
streamer.write('file2');
streamer.on('data', function (data) {
  console.log(data);
});
// 'first line from file 1\nsecond line from file 1\n'
// 'first line from file 2\nsecond line from file 2'
// '\nthird line from file 2\n'
// ...

Watch a directory tree

Watch a directory tree, pushing changed or added files down the pipeline. This basically connects chokidar to a pipe.

Note that unlike the other utilities, this is just a Readable stream, it's not a Transform or Duplex.

var watcher = pvcf.watcher('mydir')
watcher.on('data', function (data) {
  console.log(data);
});
// {type: 'addDir', path: 'dir1' }
// {type: 'add', path: 'dir1/file1' }
// {type: 'change', path: 'dir1/file1' }
// {type: 'unlink', path: 'dir1/file1' }
// {type: 'unlinkDir', path: 'dir1' }

Readme

Keywords

none

Package Sidebar

Install

npm i pvc-file

Weekly Downloads

0

Version

0.0.3

License

MIT

Last publish

Collaborators

  • jagill