Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

rollback

JustinLivi41MIT0.2.16TypeScript support: included

Rollback a directory to a prior snapshot

snapshot, fs, rollback, restore, temp, undo

readme

Rollback

Gitlab pipeline status Coverage Status David NPM node npm

npm type definitions

Rollback the rock!

Alt text

Undo pesky file system mutations with ease.

Installation

npm i -s rollback

Both typescript and javascript support come out of the box.

Basic Usage

Asynchronous API

Take a snapshot of a directory.

import { snapshot } from 'rollback';
import { writeFileSync } from 'fs';

snapshot({
  path: '/some/directory'
}).then(snap => {
  // make some changes
  writeFileSync('/some/directory/myFile', 'some updates');
  // then rollback all the changes
  return snap.rollback();
});

Take a snapshot of a file.

import { snapshotFile } from 'rollback';
import { writeFileSync } from 'fs';

snapshotFile({
  path: '/some/file.txt'
}).then(snap => {
  // make some changes
  writeFileSync('/some/file.txt', 'some updates');
  // then rollback all the changes
  return snap.rollback();
});

Synchronous API

Take a snapshot of a directory.

import { snapshotSync } from 'rollback';
import { writeFileSync } from 'fs';

const snap = snapshotSync({
  path: '/some/directory'
});
writeFileSync('/some/directory/myFile', 'some updates');
snap.rollbackSync();

Take a snapshot of a file.

import { snapshotFileSync } from 'rollback';
import { writeFileSync } from 'fs';

const snap = snapshotFileSync({
  path: '/some/file.txt'
});
writeFileSync('/some/file.txt', 'some updates');
snap.rollbackSync();

Advanced Usage

Rollback exposes four base methods: snapshot, snapshotSync, snapshotFile, and snapshotFileSync.

All methods accept all configuration options exposed by tmp.

Additionally the following options from fs-extra's copy are supported:

preserveTimestamps, filter, recursive (recursive is only supported for snapshot and snapshotSync)

snapshot and snapshotFile return a Promise which resolves with a Snapshot object.

snapshotSync and snapshotFileSync return a Snapshot directly.

Snapshot

A Snapshot object has the following properties:

property type description
path string the path of the temporary directory
cleanup () => void manually cleans up the temporary directory
rollback (options?: RollbackOptions) => Promise<void> asynchronously rolls back any changes to the snapshot
rollbackSync (options?: RollbackOptions) => void synchronously rolls back any changes to the snapshot

RollbackOptions takes the following form:

interface RollbackOptions {
  preserveTimestamps?: boolean;
  recursive?: boolean; // only supported if the snapshot is of a directory 
}

The default for rollback options is whatever was specified in the snapshot, snapshotSync, snapshotFile, or snapshotFileSync invocation that generated the Snapshot object.

API Documentation

API

License

Licensed under MIT

changelog

0.2.16 (2020-05-25)

Build

  • Resolve install command mismatch (effe9af)

fix

  • upgrade @types/fs-extra from 8.1.0 to 8.1.1 (790bad6)
  • upgrade @types/fs-extra from 8.1.0 to 8.1.1 (0274aba)
  • upgrade @types/node from 12.12.37 to 12.12.38 (a0818c9)
  • upgrade @types/node from 12.12.37 to 12.12.38 (9d875f4)
  • upgrade @types/tmp from 0.1.0 to 0.2.0 (29c2b2e)
  • upgrade @types/tmp from 0.1.0 to 0.2.0 (a8c2bee)
  • upgrade tmp-promise from 2.0.2 to 2.1.1 (5dfea14)
  • upgrade tmp-promise from 2.0.2 to 2.1.1 (9eb1ff4)

Fix

  • Add missing package-lock configuration (cbb6d20)
  • prevent cd package mutations (af4a647)

0.2.15 (2020-05-03)

fix

  • resolve additional missing package-lock dependency (5e2fa93)
  • resolve package-lock issue (1501da3)
  • resolve package-lock mutation (2e2151a)

0.2.14 (2020-04-30)

fix

  • upgrade @types/node from 12.12.30 to 12.12.31 (a7fc001)
  • upgrade @types/node from 12.12.31 to 12.12.32 (4bac81b)
  • upgrade @types/node from 12.12.32 to 12.12.35 (56cabab)
  • upgrade @types/node from 12.12.35 to 12.12.36 (a74e437)
  • upgrade @types/node from 12.12.36 to 12.12.37 (35a2863)
  • upgrade @types/node from 12.12.36 to 12.12.37 (a6793b5)
  • upgrade graceful-fs from 4.2.3 to 4.2.4 (2f3a433)
  • upgrade graceful-fs from 4.2.3 to 4.2.4 (9bebd46)

0.2.13 (2020-03-22)

fix

  • upgrade @types/node from 12.6.7 to 12.12.30 (921f82d)
  • upgrade graceful-fs from 4.2.0 to 4.2.3 (c32df58)

0.2.12 (2020-03-15)

Upgrade

  • Update @types/jest to version 25.1.4 (067e340)
  • Update lockfile package-lock.json (12c9b6e)
  • Update lockfile package-lock.json (42e1163)
  • Update lockfile package-lock.json (a0e627a)
  • Update lockfile package-lock.json (da4079f)
  • Update mock-fs to version 4.11.0 (0f8e543)
  • Update typedoc to version 0.16.11 (3ec4f89)
  • Update typedoc-plugin-markdown to version 2.2.17 (945e7c4)

0.2.11 (2020-02-20)

Upgrade

  • Update @types/fs-extra to version 8.1.0 (271f025), closes #91
  • Update @types/jest to version 25.1.3 (61e3dcb)
  • Update @types/mock-fs to version 4.10.0 (c3450e1)
  • Update conventional-changelog-eslint to version 3.0.4 (68e03ba)
  • Update conventional-recommended-bump to version 6.0.5 (675dc01), closes #86
  • Update lockfile package-lock.json (de71d90)
  • Update lockfile package-lock.json (1583522)
  • Update lockfile package-lock.json (e5a7844)
  • Update lockfile package-lock.json (299995e)
  • Update lockfile package-lock.json (80b3095)
  • Update lockfile package-lock.json (3c39a70)
  • Update lockfile package-lock.json (857e562)
  • Update lockfile package-lock.json (70b27bd)
  • Update lockfile package-lock.json (66e2ffb)
  • Update lockfile package-lock.json (bf24fe7)
  • Update mock-fs to version 4.10.4 (880505e), closes #92
  • Update prettier to version 1.19.1 (21b8166), closes #94
  • Update ts-jest to version 25.2.1 (9459ab3)
  • Update typedoc to version 0.16.10 (0a45e6f)
  • Update typedoc-plugin-markdown to version 2.2.16 (058c760), closes #82

0.2.10 (2020-02-13)

Upgrade

  • Update @types/jest to version 24.0.16 (5faf706)
  • Update @types/node to version 12.6.7 (e922f04)
  • Update conventional-changelog-cli to version 2.0.23 (e458080)
  • Update coveralls to version 3.0.6 (4cf95c1)
  • Update jest-extended to version 0.11.5 (05043ea)
  • Update lockfile package-lock.json (1db98a3)
  • Update lockfile package-lock.json (f99d473)
  • Update lockfile package-lock.json (9fb79ae)
  • Update lockfile package-lock.json (cd990f6)
  • Update lockfile package-lock.json (d581db9)
  • Update lockfile package-lock.json (1e0590b)
  • Update lockfile package-lock.json (c24ef5a)
  • Update lockfile package-lock.json (af505fc)
  • Update lockfile package-lock.json (88011cf)
  • Update ts-jest to version 24.1.0 (c6ff0e2)
  • Update typedoc to version 0.15.0 (8368b9b)
  • Update typedoc to version 0.16.0 (716e803)
  • Update typedoc to version 0.16.9 (8e79407)

0.2.9 (2019-07-17)

Upgrade

  • Update @types/node to version 12.6.6 (e793809), closes #79
  • Update coveralls to version 3.0.5 (e6b71db)
  • Update lockfile package-lock.json (1e2db75)
  • Update lockfile package-lock.json (b457396)
  • Update lockfile package-lock.json (4b1c8b5)
  • Update typedoc-plugin-markdown to version 2.0.9 (f734c94)

0.2.8 (2019-07-11)

Upgrade

  • Update @types/node to version 12.6.2 (18856f6), closes #74
  • Update jest-extended to version 0.11.2 (326209b)
  • Update lockfile package-lock.json (269ff41)
  • Update lockfile package-lock.json (44827c7)

0.2.7 (2019-07-04)

Upgrade

  • Update lockfile package-lock.json (799865c)
  • Update tmp-promise to version 2.0.2 (e1387ad)

0.2.6 (2019-07-04)

Fix

  • Install graceful-fs as direct dependency (31b32d4)

Upgrade

  • Update @types/fs-extra to version 5.1.0 (545c2d7)
  • Update @types/fs-extra to version 8.0.0 (ad6d431)
  • Update @types/jest to version 24.0.13 (9999de0)
  • Update @types/jest to version 24.0.15 (5aefaf0), closes #63
  • Update @types/node to version 11.13.9 (8a2549b)
  • Update @types/node to version 12.0.10 (e67cc1d), closes #56
  • Update @types/node to version 12.0.11 (13dc37a)
  • Update conventional-changelog-cli to version 2.0.21 (b0e4d56)
  • Update conventional-recommended-bump to version 5.0.0 (4702e79)
  • Update coveralls to version 3.0.4 (9f3c61d)
  • Update fs-extra to version 8.1.0 (7c9e23e), closes #54
  • Update lockfile package-lock.json (9090fd3)
  • Update lockfile package-lock.json (af3071c)
  • Update lockfile package-lock.json (fe1bd47)
  • Update lockfile package-lock.json (a86cfda)
  • Update lockfile package-lock.json (77258d0)
  • Update lockfile package-lock.json (a85a4cb)
  • Update lockfile package-lock.json (b82da10)
  • Update lockfile package-lock.json (4bf83fe)
  • Update lockfile package-lock.json (171060b)
  • Update lockfile package-lock.json (00fea30)
  • Update lockfile package-lock.json (8db608c)
  • Update lockfile package-lock.json (700be5e)
  • Update lockfile package-lock.json (69f1fa0)
  • Update lockfile package-lock.json (d801f1b)
  • Update lockfile package-lock.json (b135fc5)
  • Update lockfile package-lock.json (689e91f)
  • Update lockfile package-lock.json (9750517)
  • Update mock-fs to version 4.10.0 (f8c7585)
  • Update mock-fs to version 4.10.1 (e11bf77)
  • Update prettier to version 1.18.2 (275739d), closes #62
  • Update tmp-promise to version 1.1.0 (343e7b7)
  • Update tmp-promise to version 2.0.0 (9747317)
  • Update tmp-promise to version 2.0.1 (49af9a0)
  • Update typedoc-plugin-markdown to version 2.0.8 (d60596e), closes #58

0.2.5 (2019-05-01)

Build

  • Add tests for node 11 and 12 (62b9dfa)
  • Attempt to fix CI not starting (2db5637)
  • Only report coverage on master (bf7554d)

Upgrade

  • Update @types/jest to version 24.0.12 (51473d6)
  • Update lockfile package-lock.json (3f64f51)

0.2.4 (2019-04-27)

Build

  • Update greenkeeper messages (fixes #34) (ee46829), closes #34

0.2.3 (2019-04-27)

Build

  • Add sync stage (refs #34) (dc851ab), closes #34
  • Auto sync release to dev (fixes #34) (daa1f78), closes #34

Upgrade

  • Update @types/node to version 11.13.6 (863028c)
  • Update @types/node to version 11.13.8 (4f0227b), closes #36
  • Update conventional-changelog-cli to version 2.0.17 (d5ccf90)
  • Update mock-fs to version 4.9.0 (7cf83b3)

0.2.2 (2019-04-19)

Fix

  • Pin version numbers (fixes #29) (a4f45bf), closes #29

0.2.1 (2019-04-18)

Build

  • Add additional git configuration (refs #12) (7dc2be9), closes #12
  • Add automated bump script (refs #12) (0f34181), closes #12
  • Add CD pipeline (fixes #12) (83e27dc), closes #12
  • Add mergify configuration (fixes #13) (7e03ffa), closes #13
  • Attempt CD fix using --unsafe-perm (refs #12) (4b99d24), closes #12
  • Configure git user in CD pipeline (refs #12) (a5b1649), closes #12
  • Ensure build breaks on test failure (fixes #7) (36151cd), closes #7
  • Fix git configuration (refs #12) (c895ff7), closes #12
  • Move publish script to CD config (refs #12) (4b5b074), closes #12
  • Only utilize .npmrc during release (refs #12) (8de98f7), closes #12
  • Output coverage reporting in directory (refs #7) (092a23a), closes #7
  • Properly report coverage (refs #7) (c20e576), closes #7
  • Resolve git branch name issue (refs #12) (186d124), closes #12
  • Revert mergify config status check (994e674)
  • Update CD git logic (refs #12) (76d8fad), closes #12
  • Update git push command (refs #12) (c12a01d), closes #12

Docs

  • Add types badge (fixes #15) (397c0ee), closes #15
  • Configure Greenkeeper messages (fixes #16) (d123816), closes #16

Fix

  • Attempt to fix coveralls badge caching (fixes #10) (ce4306f), closes #10
  • Enforce mergify config checking (refs #13) (9ba9432), closes #13
  • Properly import types from upgrade tmp (fixes #9) (dedea4e), closes #9

0.2.0 (2019-03-22)

Breaking

Docs

New

  • Add file API (refs #3) (56ffffa), closes #3

Update

  • Add file API documentation (refs: #3) (aabd1a3), closes #3

0.1.1 (2019-03-12)

0.1.0 (2019-03-10)