Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
M

memfs

> 编程语言
Open source

Node.js "fs" and browser "File System API" adapters and in-memory implementations

2.1K stars0 likes0 views
WebsiteGitHub

About

Node.js "fs" and browser "File System API" adapters and in-memory implementations

memfs

JavaScript file system utilities for Node.js and browser. Implementation of in-memory Node.js fs module API and in-memory browser File System API, as well as adapters from fs module to File Sytem API and from File Sytem API to fs module.

Install

npm i memfs

Resources

  • In-memory Node.js fs API
  • In-memory browser File System (Access) API
  • fs to File System (Access) API adapter
  • File System (Access) API to fs adapter
  • Directory snapshot utility
  • print directory tree to terminal
  • Code reference
  • Test coverage

Watching

All file-watching APIs are implemented on both sides of the fs and File System API divide:

Feature Package Notes fs.watch — recursive, encoding, signal, throwIfNoEntry, ignore @jsonjoy.com/fs-node 'error'/'close' events, ref()/unref() fs.watchFile / fs.unwatchFile @jsonjoy.com/fs-node polling, bigint, Node's reappearance semantics fs.promises.watch async iterator @jsonjoy.com/fs-node maxQueue, overflow, AbortError on abort FileSystemObserver @jsonjoy.com/fs-fsa deterministic OPFS profile: precise records, real "moved" records, microtask batching fs.watch/fs.watchFile over a real FSA directory @jsonjoy.com/fs-fsa-to-node works over OPFS in Chrome 133+ via the native observer FileSystemObserver over any fs @jsonjoy.com/fs-node-to-fsa best-effort profile: renames stat-classified, no "moved" records

Intentional divergences from real watchers (the in-memory backend is deterministic, so platform unreliability is not emulated):

  • Paths are watched semantically rather than by inode: after delete-and-recreate, memfs reports events for the recreated entry, while a real POSIX watcher keeps watching the dead inode.
  • Exactly one event per logical operation — no platform duplicate events.
  • filename is never null.
  • The Node-style FSWatcher delivers events synchronously inside the mutating operation, whereas real Node defers to the event loop; the FileSystemObserver batches per microtask, as the spec requires.

Demos

  • Git in browser, which writes to a real folder
  • Git in browser, which writes to OPFS file system
  • Git on in-memory file system
  • fs in browser, creates a .tar file in real folder
  • fs in browser, synchronous API, writes to real folder

See also

  • unionfs - creates a union of multiple filesystem volumes
  • fs-monkey - monkey-patches Node's fs module and require function
  • linkfs - redirects filesystem paths
  • spyfs - spies on filesystem actions

License

Apache 2.0

GitHub Issues· 0 open

View all on GitHub

No open issues yet, or sync has not completed.

Highlights

  • •In-memory Node.js fs API
  • •In-memory browser File System (Access) API
  • •fs to File System (Access) API adapter
  • •File System (Access) API to fs adapter
  • •Directory snapshot utility
  • •print directory tree to terminal
  • •Code reference
  • •Test coverage
  • •Paths are watched semantically rather than by inode: after delete-and-recreate, memfs reports
  • •Exactly one event per logical operation — no platform duplicate events.

> Tags

TypeScriptbrowserfscascrudfile

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言