cjs-faker fakes commonJS and AMD boilerplate to allow importing legacy code via ES6 modules.
This is implemented by providing fake
define() calls that are used by the commonJS or AMD code being included.
You must shim all modules that you depend on.
This approach is mostly a thought experiment in evaluating legacy code at runtime, rather than requiring a build step (as
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 requires providing a shim around all commonJS or AMD modules:
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.
If you depend on commonJS module A, which depends on commonJS module B etc, you must provide the shim for B first, then A.
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:
And file A: