fs-snapshot

creates a snapshot of a directory which can be used to determine which files have changed


License
MIT
Install
npm install fs-snapshot@0.2.0

Documentation

FS Snapshot

npm tests dependencies coverage

Creates a snapshot of a directory which can be used to determine which files have changed

Note: This project is in early development, and versioning is a little different. Read this for more details.

Why should you care?

Sometimes in life you need to check a tree of files to see what has changed from the last time you checked it, without constantly watching said files. For example, if you are backing up files once a week, you don't want to back up every file, only the ones that have changed. Same with if you were generating a static site.

FS Snapshot does exactly that. It will produce an object that can be saved to hold on to the state of a file tree, and also a function that can be used to compare two of these objects to produce the names of files that have changed.

Installation

npm install fs-snapshot -S

Note: This project is compatible with node v6+ only

Usage

To generate a snapshot, use snapshot.create(root). To compare two snapshots, use snapshot.changed(snapshot1, snapshot2). Snapshots are buffers containing zlib-compressed JSON objects. To compress or decompress manually, you can use snapshot.compress(src) and snapshot.decompress(src).

const snapshot = require('fs-snapshot')

const snap1 = snapshot.create('./some_files').then(console.log)

// check the output, if you want
snap1.then((s) => {
  console.log(snapshot.decompress(snap1))
})

// wait a while, make some changes to some of the files

const snap2 = snapshot.create('./some_files')

// now we compare the two snapshots
Promise.all([snap1, snap2]).then(([s1, s2]) => {
  // array of files that have changed between the first and second snapshots
  const changedFiles = snapshot.changed(snap1, snap2)
  console.log(changedFiles)
})

License & Contributing