In-Memory Filesystem (memory-fs)

0.5.0 · maintenance · verified Sun Apr 19

memory-fs provides a simple, synchronous and asynchronous, in-memory filesystem abstraction, designed to hold data entirely within a JavaScript object. It mirrors a subset of the Node.js `fs` module API, making it suitable for scenarios where persistent disk I/O is undesirable or impractical, such as build tools, bundlers, and testing environments. The current stable version, 0.5.0, was released in 2017. While not actively developing new features, it is a critical, stable dependency for projects like Webpack, which relies on it for fast, transient asset compilation. Its primary differentiator is its complete in-memory operation and direct API compatibility with many standard `fs` methods, offering a performant alternative to disk-based operations for temporary file storage.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates basic synchronous and asynchronous file operations (create, write, read, delete, list, stat) using the `memory-fs` API.

const MemoryFileSystem = require('memory-fs');
const fs = new MemoryFileSystem(); // Optionally pass an initial JavaScript object, e.g., { 'src': { 'main.js': 'console.log("Hello");' } }

// Create directories
fs.mkdirpSync("/a/test/dir");
console.log('Created /a/test/dir');

// Write and read a file
const filePath = "/a/test/dir/file.txt";
fs.writeFileSync(filePath, "Hello World from memory-fs");
console.log(`Content of ${filePath}: ${fs.readFileSync(filePath, 'utf8')}`);

// Async file unlink
fs.unlink(filePath, function(err) {
  if (err) {
    console.error(`Error unlinking file: ${err.message}`);
    return;
  }
  console.log(`${filePath} unlinked successfully.`);
});

// List directory contents
console.log(`Contents of /a/test: ${fs.readdirSync("/a/test")}`);

// Get file/directory stats
const stats = fs.statSync("/a/test/dir");
console.log(`/a/test/dir is a directory: ${stats.isDirectory()}`);

// Clean up directory
fs.rmdirSync("/a/test/dir");
console.log('Removed /a/test/dir');

view raw JSON →