context-require
v1.4.2
Published
Allows you to require files in a custom vm context.
Downloads
577
Readme
Creates a new require function which runs all required modules in a context other than global
.
Supports custom require extensions
and resolvers
. Useful for things like mocking the package.json
browser field without a bundler and using JSDOM (without using jsdom global) along side the native
commonjs require system.
Although other uses are possible this module was built to run tests in a browser like context with out using a bundler. Because modules are cached once per context this tool also makes it easy to isolate globals and state between tests running in the same process.
Installation
npm install context-require
Example
./index.js
import createRequire from "context-require";
const browserRequire = createRequire({
dir: __dirname,
context: new JSDOM('<div>Hello World</div>').window, // This object becomes the context for any required files.
extensions: ..., // Same as require.extensions but only used in the above context.
resolve(from, request, parentModule) {...} // Override file resolution for this context.
});
browserRequire("./get-document-body").innerHTML; // <div>Hello World</div>
./get-document-body.js
typeof global; // undefined
module.exports = document.body;
Contributions
- Use
npm test
to build and run tests.
Please feel free to create a PR!