Skip to content

Keep require and import consistent after bundling or transpiling.

License

Notifications You must be signed in to change notification settings

pinojs/real-require

Repository files navigation

real-require

Package Version Dependency Status Build

Keep require and import consistent after bundling or transpiling.

Installation

Just run:

npm install real-require

Usage

The package provides two drop-ins functions, realRequire and realImport, which can be used in scenarios where tools like transpilers or bundlers change the native require or await import calls.

The current realRequire functions only handles webpack at the moment, wrapping the __non_webpack__require__ implementation that webpack provides for the final bundle.

Example

// After bundling, real-require will be embedded in the bundle
const { realImport, realRequire } = require('real-require')

/*
  By using realRequire, at build time the module will not be embedded and at runtime it will try to load path from the local filesytem.
  This is useful in situations where the build tool does not support skipping modules to embed.
*/
const { join } = realRequire('path')

async function main() {
  // Similarly, this make sure the import call is not modified by the build tools
  const localFunction = await realImport('./source.js')

  localFunction()
}

main().catch(console.error)

Contributing

See CONTRIBUTING.md

License

Copyright Paolo Insogna and real-require contributors 2021. Licensed under the MIT License.