cjs-faker fakes commonJS and AMD boilerplate to allow importing legacy code via ES6 modules.
This is implemented by providing fake exports
/module.exports
, require()
and define()
calls that are used by the commonJS or AMD code being included.
You must shim all modules that you depend on.
Rationale
This approach is mostly a thought experiment in evaluating legacy code at runtime, rather than requiring a build step (as require()
and define()
are not supported natively by browsers).
For most practical purposes, you'll be better off using Rollup with its commonJS plugin. Using Rollup requires a build step before you can import legacy code as an ES6 module, but doesn't require a shim per module in the dependency tree.
Usage
Usage requires providing a shim around all commonJS or AMD modules:
// wrap_base64.js;;'base64';
Now you can just use the base64
module inside ES6:
;console; // or use require() itself for already wrapped modulesconst base64 = ;
No build steps are required.
Dependency Tree
If you depend on commonJS module A, which depends on commonJS module B etc, you must provide the shim for B first, then A.
The default faker
method in the examples fills a registry that is available via the global require()
call, so B has to be shimmed first for A's require('a')
call to succeed.
See file B:
// wrap_b.js;;'b';
And file A:
// wrap_a.js;;'a';