normalized-fs
TypeScript icon, indicating that this package has built-in type declarations

1.0.0-alpha.1 • Public • Published

normalized-fs

GitHub license Build Status Coverage Dependencies

A drop-in replacement for fs that aims to normalize the behavior across different platforms and environments, and to make filesystem access more resilient to errors.

Improvements over fs module

  • Queues up open and readdir calls, and retries them once something closes if there is an EMFILE error from too many file descriptors.
  • Fixes lchmod for Node versions prior to 0.6.2.
  • Implements fs.lutimes if possible. Otherwise it becomes a noop.
  • Ignores EINVAL and EPERM errors in chown, fchown or lchown if the user isn't root.
  • Makes lchmod and lchown become noops, if not available.
  • Retries reading a file if read results in EAGAIN error.

Installation

npm

$ npm install normalized-fs

yarn

$ yarn add normalized-fs

Usage

// import just like with fs
import fs from 'normalized-fs';
 
// now go and do stuff with it...
fs.readFileSync('some-file-or-whatever');

Global patching

If you want to patch the global fs module (or any other fs-like module) you can do this:

NOTE: This should only ever be done at the top-level application layer, in order to delay on EMFILE errors from any fs-using dependencies. You should not do this in a library, because it can cause unexpected delays in other parts of the program.

import realFs from 'fs';
import nfs from 'normalized-fs';
nfs.normalize(realFs);

Credits

Big thanks to isaacs who created graceful-fs which this package is based upon.

Package Sidebar

Install

npm i normalized-fs

Weekly Downloads

2

Version

1.0.0-alpha.1

License

ISC

Unpacked Size

355 kB

Total Files

68

Last publish

Collaborators

  • mekwall