Files
dewedev/node_modules/fs-monkey/docs/api/patchRequire.md
dwindown 7f2dd5260f Initial commit: Developer Tools MVP with visual editor
- Complete React app with 7 developer tools
- JSON Tool with visual structured editor
- Serialize Tool with visual structured editor
- URL, Base64, CSV/JSON, Beautifier, Diff tools
- Responsive navigation with dropdown menu
- Dark/light mode toggle
- Mobile-responsive design with sticky header
- All tools working with copy/paste functionality
2025-08-02 09:31:26 +07:00

1.6 KiB

patchRequire(vol[, unixifyPaths[, Module]])

Patches Node's module module to use a given fs-like object vol for module loading.

  • vol - fs-like object
  • unixifyPaths (optional) - whether to convert Windows paths to unix style paths, defaults to false.
  • Module (optional) - a module to patch, defaults to require('module')

Monkey-patches the require function in Node, this way you can make Node.js to require modules from your custom filesystem.

It expects an object with three filesystem methods implemented that are needed for the require function to work.

let vol = {
    readFileSync: () => {},
    realpathSync: () => {},
    statSync: () => {},
};

If you want to make Node.js to require your files from memory, you don't need to implement those functions yourself, just use the memfs package:

import {vol} from 'memfs';
import {patchRequire} from 'fs-monkey';

vol.fromJSON({'/foo/bar.js': 'console.log("obi trice");'});
patchRequire(vol);
require('/foo/bar'); // obi trice

Now the require function will only load the files from the vol file system, but not from the actual filesystem on the disk.

If you want the require function to load modules from both file systems, use the unionfs package to combine both filesystems into a union:

import {vol} from 'memfs';
import {patchRequire} from 'fs-monkey';
import {ufs} from 'unionfs';
import * as fs from 'fs';

vol.fromJSON({'/foo/bar.js': 'console.log("obi trice");'});
ufs
    .use(vol)
    .use(fs);
patchRequire(ufs);
require('/foo/bar.js'); // obi trice