context-require
TypeScript icon, indicating that this package has built-in type declarations

1.4.2 • Public • Published

context-require
API Stability TypeScript Styled with prettier Build status Test Coverage NPM Version Downloads

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!

Package Sidebar

Install

npm i context-require

Weekly Downloads

40

Version

1.4.2

License

MIT

Unpacked Size

13.7 kB

Total Files

5

Last publish

Collaborators

  • mlrawlings
  • dylanpiercey