Skip to content

origin1tech/vstor

Repository files navigation

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

OptionDescriptionDefault
basePatha base path all files should be relative toprocess.cwd()
jsonSpacerstring or number of spaces for formatting JSON2

API

Arguments are depicted with TypeScript type annotations.

Properties

PropertyDescription
optionsobject containing VStor options.
storereturns the entire file store.

Methods

MethodDescriptionArgumentsReturns
resolveKeyresolves file key using base path.key: stringstring
hasKeychecks if store contains key.key: stringVinylFile
existschecks if file in store and not deleted.path: string | VinylFileboolean
isEmptycheck if file contents are not null.path: string | VinylFileboolean
readreads a file.path: string | VinylFile, def?: anyIReadMethods
writewrites a file.path: string | VinylFile, contents: string | Buffer | IMap, stat?: StatsVStor
copycopies a file or directory of files.from: string | string[], to: string, options?: IGlobOptions | CopyTransform, transform?: CopyTransformVStor
movemoves a file.from: string, to: string, options?: IGlobOptionsVStor
appendappends value to file.to: string, content: string | Buffer, trim?: booleanVStor
removeremoves a file.paths: string | string[], options?: IGlobOptionsVStor
savesaves all changes to disk.filters?: Transform[] | SaveCallback, fn?: SaveCallbackVStor

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.

EventDescriptionArguments
changedfires on any put to store.file: VinylFile, vstor: VStor
copiedfires on file copied.file: VinylFile, vstor: VStor
movedfires on file moved.file: VinylFile, vstor: VStor
appendedfires on file appended.file: VinylFile, vstor: VStor
removedfires 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

About

In memory vinyl file storage.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published