VStor
In memory file manager using Vinyl files such as used in Gulp. Allows working with files in memory before writing to dist. Supports filters like you'd use with a Gulp plugin. Similar to mem-fs-editor with a few more API methods also handles in memory copy a little better preventing need of saving before moving or removing.
Install
--production is optional, but prevents installing devDependencies.
$ npm install vstor --production
Usage
Using TypeScript or ES6
import { VStor } from 'vstor';
const vstor = new VStor({ /* your options */ });
const contents = vstor.read('./some/path/to/file.txt').toValue();
Using ES5
var VStor = require('vstor').VStor;
var vstor = new VStor({ /* your options */ });
var buf = vstor.read('./some/path/to/file.txt').toBuffer();
Options
Option | Description | Default |
---|---|---|
basePath | a base path all files should be relative to | process.cwd() |
jsonSpacer | string or number of spaces for formatting JSON | 2 |
API
Arguments are depicted with TypeScript type annotations.
Properties
Property | Description |
---|---|
options | object containing VStor options. |
store | returns the entire file store. |
Methods
Method | Description | Arguments | Returns |
---|---|---|---|
resolveKey | resolves file key using base path. | key: string | string |
hasKey | checks if store contains key. | key: string | VinylFile |
exists | checks if file in store and not deleted. | path: string | VinylFile | boolean |
isEmpty | check if file contents are not null. | path: string | VinylFile | boolean |
read | reads a file. | path: string | VinylFile, def?: any | IReadMethods |
write | writes a file. | path: string | VinylFile, contents: string | Buffer | IMap, stat?: Stats | VStor |
copy | copies a file or directory of files. | from: string | string[], to: string, options?: IGlobOptions | CopyTransform, transform?: CopyTransform | VStor |
move | moves a file. | from: string, to: string, options?: IGlobOptions | VStor |
append | appends value to file. | to: string, content: string | Buffer, trim?: boolean | VStor |
remove | removes a file. | paths: string | string[], options?: IGlobOptions | VStor |
save | saves all changes to disk. | filters?: Transform[] | SaveCallback, fn?: SaveCallback | VStor |
Examples
Writing file to JSON.
vstor
.write('./some/path/data.json', { name: 'John', age: 33 })
.save();
Move file.
vstor
.move('./some/path/data.json', './some/path/moved.json')
.save();
Appending to a file.
vstor
.append('./some/path/myfile.txt', 'some new line.')
.save();
Apply filter on save.
Filter callback args:
- file - the Vinyl File object.
- enc - the file encoding.
- done - callback to continue.
vstor
.save((file, enc, done) => {
// do something on each file in store.
done();
});
Events
VStor provides events you can listen on.
Event | Description | Arguments |
---|---|---|
changed | fires on any put to store. | file: VinylFile, vstor: VStor |
copied | fires on file copied. | file: VinylFile, vstor: VStor |
moved | fires on file moved. | file: VinylFile, vstor: VStor |
appended | fires on file appended. | file: VinylFile, vstor: VStor |
removed | fires on file removed. | file: VinylFile, vstor: VStor |
Liten to any change event.
Below describes listening to the "changed" event but all events work exactly the same.
vstor.on('changed', (file) => {
// do something with the changed file.
});
Change
See CHANGE.md
License
See LICENSE.md