Package Exports
- memfs
- memfs/lib/index.js
- memfs/lib/node
- memfs/lib/node.js
- memfs/lib/promises
- memfs/lib/promises.js
- memfs/lib/volume
- memfs/lib/volume.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (memfs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
memfs
In-memory file-system with Node's fs API.
- Node's
fsAPI implemented, see old API Status, missing list, missingopendir - Stores files in memory, in
Buffers - Throws sameish* errors as Node.js
- Has concept of i-nodes
- Implements hard links
- Implements soft links (aka symlinks, symbolic links)
- Permissions may* be implemented in the future
- Can be used in browser, see
memfs-webpack
Install
npm install --save memfsUsage
import { fs } from 'memfs';
fs.writeFileSync('/hello.txt', 'World!');
fs.readFileSync('/hello.txt', 'utf8'); // World!Create a file system from a plain JSON:
import { fs, vol } from 'memfs';
const json = {
'./README.md': '1',
'./src/index.js': '2',
'./node_modules/debug/index.js': '3',
};
vol.fromJSON(json, '/app');
fs.readFileSync('/app/README.md', 'utf8'); // 1
vol.readFileSync('/app/src/index.js', 'utf8'); // 2Export to JSON:
vol.writeFileSync('/script.sh', 'sudo rm -rf *');
vol.toJSON(); // {"/script.sh": "sudo rm -rf *"}Use it for testing:
vol.writeFileSync('/foo', 'bar');
expect(vol.toJSON()).toEqual({ '/foo': 'bar' });Create as many filesystem volumes as you need:
import { Volume } from 'memfs';
const vol = Volume.fromJSON({ '/foo': 'bar' });
vol.readFileSync('/foo'); // bar
const vol2 = Volume.fromJSON({ '/foo': 'bar 2' });
vol2.readFileSync('/foo'); // bar 2Use memfs together with unionfs to create one filesystem
from your in-memory volumes and the real disk filesystem:
import * as fs from 'fs';
import { ufs } from 'unionfs';
ufs.use(fs).use(vol);
ufs.readFileSync('/foo'); // barUse fs-monkey to monkey-patch Node's require function:
import { patchRequire } from 'fs-monkey';
vol.writeFileSync('/index.js', 'console.log("hi world")');
patchRequire(vol);
require('/index'); // hi worldDocs
See also
spyfs- spies on filesystem actionsunionfs- creates a union of multiple filesystem volumeslinkfs- redirects filesystem pathsfs-monkey- monkey-patches Node'sfsmodule andrequirefunctionlibfs- real filesystem (that executes UNIX system calls) implemented in JavaScript
License
Unlicense - public domain.